Получить объект по отражению - PullRequest
4 голосов
/ 06 июня 2011

Я ищу механизм в c #, который работает следующим образом:

Car car1;
Car car2;

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

car1 и car2 - это поля

Поэтому я хочу получить некоторый объект с отражением, а не тип: / Какя могу сделать это в C #?

Ответы [ 3 ]

6 голосов
/ 06 июня 2011

Это невозможно для локальных переменных, но если у вас есть поле, вы можете сделать

class Foo{

    public Car car1;
    public Car car2;
}

, вы можете сделать

object fooInstance = ...;

Car car1 = (Car)fooInstance.GetType().GetField("car1").GetValue(fooInstance);
4 голосов
/ 06 июня 2011

Похоже, вы пытаетесь получить доступ к локальным переменным с помощью отражения.Это невозможно.Локальные переменные недоступны для отражения.

1 голос
/ 06 июня 2011

Правильно ли я предположить, что у вас есть две переменные и что вы хотите получить одну или другую динамически? Я не верю, что вы можете сделать это с помощью рефлексии (по крайней мере, не легко), но вы можете сделать это с помощью функций довольно легко.

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

// Usage
Car car1;
Car car2;

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