5

拡張メソッドは CE フレームワークでも利用できますか? Windows フォーム プロジェクトでは正常に機能する文字列の拡張メソッドがありますが、PocketPC アプリケーションではビルドされません。

これは簡単に見つけられると思いましたが、PocketPC の拡張メソッドに関する情報を見つけることができませんでした。

編集:おっと、これは私の間違いでした。私は Visual Studio 2008 で拡張メソッドを書きましたが、PocketPC プロジェクトは Visual Studio 2005 でコンパイルされていましたが、これには気づきませんでした。それは私の人生の 1 時間であり、二度と戻ることはありません。とにかく答えてくれてありがとう。

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 に答える