【发布时间】:2010-10-27 13:50:49
【问题描述】:
我正在使用我的 app.config 告诉 Unity 我的界面类型映射...
<unity>
<containers>
<container>
<types>
<type type="UnityDAL.Interfaces.IDataContextFactory, UnityDAL"
mapTo="UnityDAL.UnityDemoDataContextFactory, UnityDAL" />
<type type="UnityDAL.Interfaces.IProductRepository, UnityDAL"
mapTo="UnityDAL.ProductRepository, UnityDAL" />
<type name="productRepo"
type="UnityDAL.Interfaces.IProductRepository, UnityDAL"
mapTo="UnityDAL.ProductRepository, UnityDAL" />
and so on...
使用此代码
var wrapper = UnityWrapper.Create();
var productRepository =
wrapper.Container.Resolve<IProductRepository>("productRepo");
var productsBO = new ProductBO(productRepository);
var products = productsBO.GetAllProducts();
这里是包装对象的构造函数...
public UnityWrapper()
{
_container = new UnityContainer();
var section =
(UnityConfigurationSection)ConfigurationManager.GetSection("unity");
section.Containers.Default.Configure(_container);
}
但我得到一个例外,上面写着......
{"依赖解析失败,type = \"IProductRepository\", 名称 = \"productRepo\"。异常消息是:当前的构建操作 (构建密钥构建密钥[UnityDAL.ProductRepository,productRepo])失败: 尝试时无法解析参数 dataContextFactory 调用构造函数 UnityDAL.ProductRepository(UnityDAL.Interfaces. IDataContextFactory 数据上下文工厂)。 (策略类型 Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy,索引 2)"}
我认为这个节点正在接线
<type type="UnityDAL.Interfaces.IDataContextFactory, UnityDAL"
mapTo="UnityDAL.UnityDemoDataContextFactory, UnityDAL" />
这里的想法最初是为了创建一个很好的依赖链。知道我做错了什么吗?如果您对我如何纠正问题有任何建议或提示,我想听听他们的意见。感谢您的帮助。
干杯,
~在圣地亚哥
【问题讨论】:
-
productRepo 类型是否为
IDataContextFactory?您需要传入IDataContextFactory或在Unity 配置文件中设置构造函数。
标签: c# configuration dependency-injection unity-container