【发布时间】:2026-02-03 21:20:06
【问题描述】:
我最近不得不将使用 Ninject 1.0 的相对较大的控件库更新到 Ninject 2.0,以帮助解决我在 1.0 中遇到的一些问题。更新进展顺利,我觉得 Ninject 2.0 快了很多。
但是,为了避免以后出现这个问题,我创建了自己的接口来注入字段和属性(这实际上将调用我希望在当前 Web 应用程序中使用的 IOC 容器上的方法)。所以现在我的控制库独立于任何特定的 IOC 容器,这将加速未来该领域的任何变化。
我想知道有没有其他人做过同样的事情?
我对它所取得的成就感到满意,但理想情况下我想更新它。在我的控件中,我通常将这些注入字段创建为受保护的,并将它们设置在该控件的构造函数中。
IBlogService _blogService = null;
IEmailService _emailService = null;
public Templates_BlogTemplate()
{
Inject(ref _blogService);
Inject(ref _emailService);
}
我遇到的问题是我必须在所有对象上使用“ref”来实际设置属性,而我不能直接在属性上使用它。
我更愿意按照这些思路做一些事情,但我认为这是不可能的。
IBlogService _blogService = null;
IEmailService _emailService = null;
public Templates_BlogTemplate()
{
Inject(_blogService, _emailService);
}
有没有人知道如何整理代码或使其以更简洁的方式工作?我还想避免使用属性,因此它会迫使开发人员决定在控件中的某个点注入变量。
欢迎所有想法和感受。
谢谢
【问题讨论】:
-
我认为无法访问用户控件的构造(无法更改构造函数的调用方式)是 ASP.NET 用户控件令人讨厌的事情之一。抱歉,我没有任何有用的答案。
标签: c# asp.net ioc-container ninject