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

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

// 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 回答