0

リフレクションを使用している間は、オブジェクトまたは変数を抽出するかどうかに関係なく抽出できますstatic。例えば

class MainApp
{
    static void Main()
    {            
        ConcretePrototype1 p1 = new ConcretePrototype1("I");
        ConcretePrototype1 c1 = (ConcretePrototype1)p1.Clone();
        Console.WriteLine("Cloned: {0}", c1.Id);
    }
}

抽出することは可能ですか

  1. p1両方なので、c1そのタイプを確認できます

  2. p1.clone() からのメソッド呼び出し

これまでのところ、これは要素が0の結果の配列で行ったことです

他のファイルからアセンブリをロードしています

var name = System.Reflection.Assembly.LoadFile(open.FileName);
name.GetType("PrototypePattern.MainApp").GetFields(BindingFlags.GetField|BindingFlags.Instance)
4

1 に答える 1

1

すべてのフィールド (プライベート/パブリック/静的/非静的) を抽出する場合は、次を使用します。

type.GetFields(BindingFlags.Static | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)

編集

単純なリフレクションを使用して、メソッドで変数とメソッド呼び出しを取得することはできません。これには、メソッドのバイトコードを実際に読み取って分析する必要があり、簡単な作業ではありません。

それでも興味がある場合は、 Mono.CecilCCIなどのライブラリをチェックすることをお勧めします。

于 2012-05-27T17:28:25.507 に答える