通过反思获取对象

时间:2011-06-06 13:11:51

标签: c# .net reflection c#-4.0 system.reflection

我正在寻找c#这样的机制:

Car car1;
Car car2;

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

car1和car2是字段

所以我想用反射得到一些对象,而不是键入:/我怎么能在c#中做到?

3 个答案:

答案 0 :(得分:6)

本地变量不可能,但如果你有一个字段,你可以

class Foo{

    public Car car1;
    public Car car2;
}

你可以做到

object fooInstance = ...;

Car car1 = (Car)fooInstance.GetType().GetField("car1").GetValue(fooInstance);

答案 1 :(得分:4)

看起来你正试图通过反射来访问局部变量。这是不可能的。反射无法访问局部变量。

答案 2 :(得分:1)

我是否正确地假设您有两个变量并且您想要动态获取其中一个?我不相信你可以用反射(至少不容易)做到这一点,但你可以很容易地用函数来做。

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

// Usage
Car car1;
Car car2;

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