Get object by reflection

倾然丶 夕夏残阳落幕 提交于 2020-01-01 12:31:19

问题


I'm looking for mechanism in c# works like that:

Car car1;
Car car2;

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

car1 and car2 are fields

So I want to get some object with reflection, not type :/ How can I do it in c# ?


回答1:


It's not possible for local variables but If you have a field, you can do

class Foo{

    public Car car1;
    public Car car2;
}

you can do

object fooInstance = ...;

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



回答2:


It looks like you're trying to access local variables by reflection. This is not possible. Local variables are not accessible by reflection.




回答3:


Am I correct to assume that you have two variables and that you want to get one or the other dynamically? I don't believe you can do this with reflection (at least not easily), but you can do it with functions quite easily.

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

// Usage
Car car1;
Car car2;

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


来源:https://stackoverflow.com/questions/6252510/get-object-by-reflection

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!