私はc#のメカニズムを探しています:そのように動作します:
Car car1;
Car car2;
Car car = (Car)SomeMechanism.Get("car1");
car1とcar2はフィールドです
だから私はタイプではなく、反射のあるオブジェクトを取得したい:/ c#でそれを行うにはどうすればよいですか?
私はc#のメカニズムを探しています:そのように動作します:
Car car1;
Car car2;
Car car = (Car)SomeMechanism.Get("car1");
car1とcar2はフィールドです
だから私はタイプではなく、反射のあるオブジェクトを取得したい:/ c#でそれを行うにはどうすればよいですか?
ローカル変数では不可能ですが、フィールドがある場合は実行できます
class Foo{
public Car car1;
public Car car2;
}
できるよ
object fooInstance = ...;
Car car1 = (Car)fooInstance.GetType().GetField("car1").GetValue(fooInstance);
リフレクションによってローカル変数にアクセスしようとしているようです。これは不可能です。リフレクションではローカル変数にアクセスできません。
2つの変数があり、どちらか一方を動的に取得したいと仮定するのは正しいですか?リフレクションでこれを行うことができるとは思いませんが(少なくとも簡単ではありません)、関数を使用すると非常に簡単に行うことができます。
// Declaration
class SomeMechanism
{
public static T Get<T>(Func<T> getter);
}
// Usage
Car car1;
Car car2;
Car car = SomeMechanism.Get(() => car1);