我正在寻找c#这样的机制:
Car car1;
Car car2;
Car car = (Car)SomeMechanism.Get("car1");
car1和car2是字段
所以我想用反射得到一些对象,而不是键入:/我怎么能在c#中做到?
答案 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);