4

私はc#のメカニズムを探しています:そのように動作します:

Car car1;
Car car2;

Car car = (Car)SomeMechanism.Get("car1");

car1とcar2はフィールドです

だから私はタイプではなく、反射のあるオブジェクトを取得したい:/ c#でそれを行うにはどうすればよいですか?

4

3 に答える 3

6

ローカル変数では不可能ですが、フィールドがある場合は実行できます

class Foo{

    public Car car1;
    public Car car2;
}

できるよ

object fooInstance = ...;

Car car1 = (Car)fooInstance.GetType().GetField("car1").GetValue(fooInstance);
于 2011-06-06T13:16:13.503 に答える
4

リフレクションによってローカル変数にアクセスしようとしているようです。これは不可能です。リフレクションではローカル変数にアクセスできません。

于 2011-06-06T13:14:58.753 に答える
1

2つの変数があり、どちらか一方を動的に取得したいと仮定するのは正しいですか?リフレクションでこれを行うことができるとは思いませんが(少なくとも簡単ではありません)、関数を使用すると非常に簡単に行うことができます。

// Declaration
class SomeMechanism
{
    public static T Get<T>(Func<T> getter);
}

// Usage
Car car1;
Car car2;

Car car = SomeMechanism.Get(() => car1);
于 2011-06-06T13:20:28.047 に答える