他のヒント

これは少なくとも面白いと思う作品です...

public static class StrExtension
{
   public static string twice(this string str) { return str + str; }
}

...
dynamic x = "Yo";
StrExtension.twice(x);

それでも、コンパイラがコンパイル時に正しい拡張メソッドを見つけることができる場合、実行時に検索される拡張メソッドのセットをパッケージ化できない理由がわかりませんか?非メンバーメソッドのvテーブルのようになります。

編集:

これは素晴らしい... http://www2.research.att。 com /〜bs / multimethods.pdf

機能しません。拡張メソッドはファイルに名前空間が含まれているかどうかに応じて機能します。私の知る限り、MSILはファイルと名前空間を含むことについて何も考えていません。

オブジェクトの拡張メソッドを作成し、それを動的に割り当てることができます:

public static void MyExt(this object o) {
    dynamic d = o;
    d.myProp = "foo";
}

次のように呼び出します:

ClassWithMyProp x;
x.MyExt();
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top