IOC容器运行时解析

时间:2010-09-15 13:40:12

标签: c# .net ioc-container

我正在尝试找到一个IOC容器,它允许我拥有存储在数据库中的字段的映射数据,并通过从数据库中提取的字符串值来解析需要解析的接口或对象。

我见过的大多数示例都是使用代码中硬编码的接口,我希望需要解析的接口是动态的。

这就是我通常看到的:

var taskController = container.Resolve<ITaskController>();

这是我想看到的:

var strTaskController = "ITaskController";
var taskController = container.Resolve(strTaskController);

我确信我可以查看所有IOC容器的文档,但我希望对于有更多IOC经验的人来说这是一个简单的问题。

3 个答案:

答案 0 :(得分:2)

使用Unity,你可以做你想要的。基本上,如果您知道完整的类型名称,则可以先执行此操作:

var type = Type.GetType("Fully.Qualified.Type.Name");
var resolvedInstance = container.Resolve(type);

编辑:根据评论,这是另一种方法:

string typeName = "MyTypeName";
var type = container.Registrations.FirstOrDefault(r => r.RegisteredType.Name == typeName);
if(type != null)
{
    var resolvedInstance = container.Resolve(type.RegisteredType);
}

答案 1 :(得分:0)

我认为这是我要回答的答案.. 托管可扩展性框架 http://msdn.microsoft.com/en-us/library/dd460648.aspx

当你找到一个新的框架来找到问题的确切解决方案时,一定要喜欢它。

答案 2 :(得分:-1)

您可以使用Castle project中的IOC容器。