c# – Unity容器无法构建

我正在尝试使用传入的类型实例化一个新类,然后使用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);
点赞