c # Преобразовать значение переменной в объект - PullRequest
0 голосов
/ 26 января 2011

Мне нужен способ преобразовать значение переменной в объект.

Допустим, переменная

string viewName = "taDataView";

Мне нужен способ преобразовать значение переменной во что-то вроде этого:

taDataView viewModel = Container.Resolve<taDataView>();

Что-то вроде eval () в php ...

Спасибо за вашу помощь.

1 Ответ

1 голос
/ 26 января 2011

Один из вариантов - использовать именованные регистрации Unity (см. «Разрешение объекта по типу и имени регистрации» в справочном файле Unity 2.0).Вам все равно нужно знать базовый тип (обычно интерфейс).

// Create container and register types
var myContainer = new UnityContainer();
myContainer.RegisterType<IMyService, DataService>("Data");
myContainer.RegisterType<IMyService, LoggingService>("Logging");

// Retrieve an instance of each type
var myDataService = myContainer.Resolve<IMyService>("Data");
var myLoggingService = myContainer.Resolve<IMyService>("Logging");

В качестве альтернативы см. Создать объект, зная только имя класса (особенно ответ Марка Гравелла ).

РЕДАКТИРОВАТЬ: Пересмотрен пример для использования дженериков.

...