7

.NET 4.0でSystem.CodeDomを使用して拡張メソッドを生成しようとした人はいますか?CodeMemberMethodまたはCodeParameterDeclarationExpressionを拡張メソッド/パラメーターとして指定する方法はないようです。

これが不可能な場合、適切な回避策はありますか?

ありがとう

4

2 に答える 2

7

どうやらCodeDomは拡張メソッドの最初のパラメーターの正しいコードを生成できませんが、次のようにごまかすことができます。

var param = new CodeParameterDeclarationExpression("this string", "s");

「この文字列」が有効なタイプではないという事実を喜んで無視します...

于 2011-05-15T22:23:35.963 に答える
0

拡張属性を参照してください

引用:

Visual Basicでは、この属性を使用して拡張メソッドを作成する必要があります。詳細については、拡張メソッド(Visual Basic)を参照してください。

C#では、この属性を使用する必要はありません。拡張メソッドを作成するには、最初のパラメーターにthis(C#リファレンス)修飾子を使用する必要があります。コンパイラは、拡張メソッドのExtensionAttributeを自動的に発行します。詳細については、拡張メソッド(C#プログラミングガイド)を参照してください。

拡張メソッドをサポートするコンパイラを作成している場合、コンパイラは、各拡張メソッド、および1つ以上の拡張メソッドを含む各クラスとアセンブリでこの属性を発行する必要があります。

于 2011-05-15T21:35:05.207 に答える