我正在尝试找到一个IOC容器,它允许我拥有存储在数据库中的字段的映射数据,并通过从数据库中提取的字符串值来解析需要解析的接口或对象。
我见过的大多数示例都是使用代码中硬编码的接口,我希望需要解析的接口是动态的。
这就是我通常看到的:
var taskController = container.Resolve<ITaskController>();
这是我想看到的:
var strTaskController = "ITaskController";
var taskController = container.Resolve(strTaskController);
我确信我可以查看所有IOC容器的文档,但我希望对于有更多IOC经验的人来说这是一个简单的问题。
答案 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容器。