PocketPC Windows CE 上的 C# 扩展方法
-
13-09-2019 - |
题
CE 框架上也可以使用扩展方法吗?我有一个字符串扩展方法,可以在 Windows 窗体项目中正常工作,但它不会在 PocketPC 应用程序中构建。
我认为这很容易找到,但是我无法找到有关 PocketPC 上扩展方法的任何信息。
编辑: 哎呀,这是我的错误。我在 Visual Studio 2008 中编写了扩展方法,但是 PocketPC 项目是在 Visual Studio 2005 中编译的,我没有意识到这一点。好吧,那是我一生中再也回不来的一个小时了。不管怎样,谢谢大家的回答。
解决方案
想在这里澄清一些混乱。扩展方法是编译器的一个功能,不一定是框架的特定版本。因此,扩展方法可以在任何平台上使用,只要有一个编译器版本既支持扩展方法又支持该平台。
C# 3.0 编译器可以将目标降低到 2.0 框架并支持扩展方法,因此它们应该可以在紧凑框架上使用。
框架实际为扩展方法提供的唯一内容是 ExtensionAttribute。但是,它没有任何与之关联的功能,并且可以由您的应用程序定义(如果它不可用)。这是我写的关于这个主题的博客文章
其他提示
是,它们在CF 3.5支持。如果使用的是CF 2.0,您将需要定义ExtensionAttribute,然后他们将工作。
// this is a definition of a 3.5 class for use in 2.0. If we upgrade to target CF3.5, we will need to remove it...
namespace System.Runtime.CompilerServices
{
public class ExtensionAttribute : Attribute { }
}
namespace TestExtension
{
public static class Extensions
{
public static int TestMethod(this string value)
{
return value.ToString();
}
}
}
它们在 Compact Framework 中受到支持 这篇博文. 。不过,我预计他们需要 Compact Framework 3.5 版。您使用哪个版本?
什么框架版本,你靶向?如果您是从VS2008针对CF 2.0,你可能需要声明ExtensionAttribute ...
namespace System.Runtime.CompilerServices
{
[AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class
| AttributeTargets.Method)]
public sealed class ExtensionAttribute : Attribute {}
}
您可以根据以下内容通过一个小技巧将它与 .NET Compact Framework 2.0 和 VS2008 一起使用 这 博客。