相关疑难解决方法(0)

如何在ASP.NET Web窗体中使用依赖注入

我试图找到一种方法来使用ASP.NET Web窗体控件的依赖注入.

我有很多控件可以直接创建存储库,并使用它们来访问和绑定数据等.

我正在寻找一种模式,我可以将存储库传递到外部控件(IoC),因此我的控件仍然不知道如何构建存储库以及它们来自何处等.

我不希望从我的控件中依赖IoC容器,因此我只希望能够使用构造函数或属性注入来构造控件.

(只是为了使事情复杂化,这些控件正在构建并在运行时由CMS放置在页面上!)

有什么想法吗?

asp.net dependency-injection webforms inversion-of-control

30
推荐指数
3
解决办法
2万
查看次数

简单的注入器和内部构造函数

我正在研究一个小型类库,并为我的DI使用简单注入器。类库具有一个访问点(我猜是public某种internal 服务),并且具有一些服务和存储库。

我看到Simple Injector不支持内部构造函数的构造函数注入。例如,我的产品服务如下:

     internal class ProductService : IProductService
      {
        private IProductRepository _productRepository;

        internal ProductService(IProductRepository repository)
        {
          if (repository == null) throw new ArgumentNullException("repository");

          _productRepository = repository;
        }

      }
Run Code Online (Sandbox Code Playgroud)

而我的设置:

container.Register<IProductService, ProductService>();
container.Register<IProductRepository>(() => new ProductRepository());
Run Code Online (Sandbox Code Playgroud)

运行代码时,出现以下异常:

For the container to be able to create ProductService, it should contain exactly one public constructor, but it has 0.
Run Code Online (Sandbox Code Playgroud)

我的问题:

1)是否有特定原因导致注入内部类在体系结构/设计方面不起作用?

2)如何实现这种行为(使用不应该公开的类进行依赖注入),并希望得到这种行为?

architecture dependency-injection simple-injector

4
推荐指数
1
解决办法
2542
查看次数