2009-06-10 17 views
5

拡張フレームワークもCEフレームワークで利用できますか?私はWindowsフォームプロジェクトでうまく動作する文字列の拡張メソッドを持っていますが、PocketPCアプリケーションではビルドできません。PocketPC上のC#エクステンションメソッドWindows CE

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

編集:これは私の間違いでした。 Visual Studio 2008で拡張メソッドを書きましたが、PocketPCプロジェクトはVisual Studio 2005でコンパイルされていましたが、これは実現しませんでした。それは私が一度も戻ってこない人生の1時間です。とにかく皆にお返事ありがとうございます。

+0

に書いたブログ記事ですか? – ChrisF

答えて

7

ここで少し混乱を避けたいと思っていました。拡張メソッドはコンパイラの機能であり、フレームワークの特定のバージョンである必要はありません。したがって、拡張メソッドは、拡張メソッドとそのプラットフォームの両方をサポートするコンパイラのバージョンがある任意のプラットフォームで使用できます。

C#3.0コンパイラは、2.0のフレームワークを対象とし、コンパクトなフレームワークで使用できるように拡張メソッドをサポートしています。

フレームワークが実際に拡張メソッドに提供するのは、ExtensionAttributeだけです。ただし、これに関連する機能はありません。利用できない場合は、アプリケーションで定義することができます。ここで私はどのようなエラー(s)はあなたが見ている対象

2

コンパクトフレームワークでは、this blog postに従ってサポートされています。しかし、私は彼らがCompact Frameworkバージョン3.5を必要とすると思います。どのバージョンを使用していますか?

2

対象とするフレームワークのバージョンは何ですか?あなたはVS2008からCF 2.0をターゲットしている場合は、ExtensionAttributeを宣言する必要があるかもしれません...

namespace System.Runtime.CompilerServices 
{ 
    [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class 
     | AttributeTargets.Method)] 
    public sealed class ExtensionAttribute : Attribute {} 
} 
+0

ここへのリンク:http://blog.markarteaga.com/UsingExtensionMethodsInNETCF20.aspx –

+0

まあ、多分、AttributeUsageを含めるのがよかったです.-p –

+0

ええ、十分です。 –

0

あなたはthisブログによると、小さなハッキングを通じて、.NET Compact Frameworkの2.0とVS2008でそれを使用することができます。

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(); 
     } 
    } 
} 
関連する問題