c#将变量值转换为对象

时间:2011-01-26 19:04:32

标签: generics c#-4.0 unity-container

我需要一种方法将变量的值转换为对象。

让我们假设一个变量

string viewName = "taDataView";

我需要一种方法将变量的值转换成这样的东西:

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

像php中的eval()......

感谢您的帮助。

1 个答案:

答案 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)。

编辑:修改了使用泛型的示例。