5

CE 框架上是否也提供扩展方法?我有一个在 windows 窗体项目中工作正常的字符串扩展方法,但它不会在 PocketPC 应用程序中构建。

我认为这很容易找到,但是我无法在 PocketPC 上找到有关扩展方法的任何信息。

编辑:哎呀,这是我的错误。我在 Visual Studio 2008 中编写了扩展方法,但是 PocketPC 项目正在 Visual Studio 2005 中编译,我没有意识到这一点。好吧,那是我生命中的一个小时,我再也回不来了。无论如何,谢谢大家的回答。

4

5 回答 5

7

想在这里澄清一点混乱。扩展方法是编译器的一个特性,不一定是特定版本的框架。因此,可以在任何平台上使用扩展方法,只要该平台的编译器版本支持扩展方法和该平台。

C# 3.0 编译器可以针对 2.0 框架并支持扩展方法,因此它们应该在紧凑框架上可用。

框架实际上为扩展方法提供的唯一东西是 ExtensionAttribute。但是,这没有任何关联的功能,如果它不可用,可以由您的应用程序定义。这是我写的关于这个主题的博客文章

于 2009-06-10T13:57:52.500 回答
3

是的,它们在 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();
        }
    }
}
于 2009-06-10T13:53:32.977 回答
2

根据这篇博文,它们在 Compact Framework 中得到支持。但是,我希望它们需要 Compact Framework 3.5 版。您使用的是哪个版本?

于 2009-06-10T13:48:40.960 回答
2

你的目标是什么框架版本?如果您的目标是 VS2008 的 CF 2.0,您可能需要声明 ExtensionAttribute...

namespace System.Runtime.CompilerServices
{
    [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class
         | AttributeTargets.Method)]
    public sealed class ExtensionAttribute : Attribute {}
}
于 2009-06-10T13:48:58.277 回答
0

根据博客,您可以通过一个小技巧将它与 .NET Compact Framework 2.0 和 VS2008 一起使用。

于 2009-06-10T13:51:47.303 回答