【发布时间】:2014-03-08 22:36:45
【问题描述】:
我正在开发一个小型类库,并为我的 DI 使用 Simple Injector。
类库有一个访问点(我猜是某种服务),它是public,它有一些internal 服务和存储库。
我看到 Simple Injector 不支持带有内部构造函数的构造函数注入。 例如,我的产品服务如下所示:
internal class ProductService : IProductService
{
private IProductRepository _productRepository;
internal ProductService(IProductRepository repository)
{
if (repository == null) throw new ArgumentNullException("repository");
_productRepository = repository;
}
}
还有我的设置:
container.Register<IProductService, ProductService>();
container.Register<IProductRepository>(() => new ProductRepository());
当我运行代码时,我得到以下异常:
For the container to be able to create ProductService, it should contain exactly one public constructor, but it has 0.
我的问题:
1) 是否存在注入内部类在架构/设计方面不起作用的具体原因?
2) 这种行为(对不应该公开的类使用依赖注入)是如何实现的,是否需要?
【问题讨论】:
-
这些类是内部类而不是公共类的原因是什么?
标签: architecture dependency-injection simple-injector