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 一起使用 博客。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top