代码之家  ›  专栏  ›  技术社区  ›  Firestrand

IOC容器运行时分辨率

  •  1
  • Firestrand  · 技术社区  · 14 年前

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

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

    这就是我想看到的:

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

    3 回复  |  直到 14 年前
        1
  •  2
  •   BFree    14 年前

    使用 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);
    }
    
        2
  •  0
  •   user179209    13 年前

    我想这就是我的答案。。 管理扩展框架 http://msdn.microsoft.com/en-us/library/dd460648.aspx

        3
  •  -1
  •   Klaus Byskov Pedersen    14 年前

    您可以使用 Castle project