Unity容器传递运行时构造函数参数

时间:2013-04-03 19:01:04

标签: unity-container

我有两个构造函数,第一个工作正常如下:

    public ESite(Func<IOrg> unityOrgFactory)
    {
        this.OrFactory = unityOrgFactory; 
        this.Kid = Guid.Empty;
    }
_IoC.RegisterType<IESite, ESite>(); 
IESite eSite = boClass.IoC.Resolve<IESite>();

现在,我需要在运行时传入一个键,所以我像往常一样添加一个构造函数:

    public ESite(Func<IOrg> unityOrgFactory, Guid kid)
    {
        this.OrFactory = unityOrgFactory;
        this.Kid = kid;
    }

此注册和解决用法的语法?我已经尝试了几种InjectionConstructor变种,但无法正确使用...我遗漏了一些东西。经过几次搜索和试用后,有时间问!我已经阅读了几篇相关主题的帖子......

感谢您的提示! GG

1 个答案:

答案 0 :(得分:0)

合理的解决方法(不一定是最佳答案)是通过将注入的参数移动到InjectionMethod

来取消构造函数的分离

寄存器:

// Use InjectionMethod Initializer to free up constructors. http://msdn.microsoft.com/en-us/library/ff953186(v=pandp.50).aspx   new InjectionMethod("Initialize", typeof(Database), "CustomerServices")
        _IoC.RegisterType<IESite, ESite>(
            new InjectionMethod("Initialize", typeof(Func<IOrg>)) 
            );

使用:

        //http://msdn.microsoft.com/en-us/library/ff953186(v=pandp.50).aspx
    [InjectionMethod]
    public void Initialize(Func<IOrg> unityOrgFactory)