我需要一种方法将变量的值转换为对象。
让我们假设一个变量
string viewName = "taDataView";
我需要一种方法将变量的值转换成这样的东西:
taDataView viewModel = Container.Resolve<taDataView>();
像php中的eval()......
感谢您的帮助。
答案 0 :(得分:1)
一种选择是使用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");
或者,请参阅Create an object knowing only the class name(尤其是Marc Gravell's answer)。
编辑:修改了使用泛型的示例。