我有两个构造函数,第一个工作正常如下:
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
答案 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)