我正在尝试使用传入的类型实例化一个新类,然后使用Unity容器来构建对象以注入其依赖项.
Unity Container没有任何扩展/策略.我只是使用一个未改变的统一容器.它正确加载配置并在代码中的其他位置使用以解决对项的依赖性.
我有以下代码:
// Create a new instance of the summary.
var newSummary = Activator.CreateInstance(message.SummaryType) as ISummary;
this.UnityContainer.BuildUp(newSummary.GetType(), newSummary);
// Code goes on to use the variable as an ISummary...
不会注入类的[Dependency]属性(公共和标准get; set;).调用BuildUp方法后,它们仍为null.有什么明显的东西我做错了吗?
提前致谢.
最佳答案 当您调用newSummary.GetType()时,它将返回基础类型.在这种情况下,无论SummaryType如何(比如MySummaryType).当它调用BuildUp时,类型不匹配,所以它不起作用.
// Code translates to:
this.UnityContainer.BuildUp(typeof(MySummaryType), newSummary);
// But newSummary is ISummary
要使BuildUp工作:
this.UnityContainer.BuildUp<ISummary>(newSummary);
要么
this.UnityContainer.BuildUp(typeof(ISummary), newSummary));
您可以使用的另一个选项(IHMO首选方法)是使用Unity的Resolve方法. BuildUp用于您无法控制其创建的对象.这不是查看代码的情况.
ISummary newSummary = this.UnityContainer.Resolve(message.SummaryType);