通过反思获取对象

pio*_*rek 4 .net c# reflection system.reflection c#-4.0

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

Car car1;
Car car2;

Car car = (Car)SomeMechanism.Get("car1");
Run Code Online (Sandbox Code Playgroud)

car1和car2是领域

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

Bal*_*a R 6

局部变量是不可能的,但如果你有一个字段,你可以这样做

class Foo{

    public Car car1;
    public Car car2;
}
Run Code Online (Sandbox Code Playgroud)

你可以做

object fooInstance = ...;

Car car1 = (Car)fooInstance.GetType().GetField("car1").GetValue(fooInstance);
Run Code Online (Sandbox Code Playgroud)

  • @piotrek 是的。`Car car1 = (Car)fooInstance.GetType().GetField("car1").GetValue(fooInstance, BindingFlags.NonPublic | BindingFlags.Instance);` 获取非公共字段。 (2认同)