ラムダを属性パラメーターとして追加できないのはなぜですか? たとえば、私はやりたい:
[MyAttribut(Transform= {object => object.ToSomethingElse()})]
C# のラムダは単なるクロージャーであることを理解する必要がありますか?
編集: すべての回答を見て、ほとんどの人が知らないと思われることを 1 つ正確に説明します。ラムダは、クロージャでない限り、コンパイル時の構造である文字通りです。
ラムダを属性パラメーターとして追加できないのはなぜですか? たとえば、私はやりたい:
[MyAttribut(Transform= {object => object.ToSomethingElse()})]
C# のラムダは単なるクロージャーであることを理解する必要がありますか?
編集: すべての回答を見て、ほとんどの人が知らないと思われることを 1 つ正確に説明します。ラムダは、クロージャでない限り、コンパイル時の構造である文字通りです。
属性へのパラメーターは、コンパイル時の定数である必要があります。
MSDN から - Attribute Parameter Types :
属性に渡される値は、コンパイル時にコンパイラに認識されている必要があります。
また、次のタイプに制限されています。
属性パラメーターは、次の型の定数値に制限されています。
単純型 (bool、byte、char、short、int、long、float、および double)
ストリング
システムタイプ
列挙
object (タイプ object の属性パラメーターへの引数は、上記のタイプのいずれかの定数値でなければなりません。)
上記のいずれかのタイプの 1 次元配列
http://msdn.microsoft.com/en-us/library/aa288454%28VS.71%29.aspx