我最近不得不将使用 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);
}
有没有人对如何整理代码或使其以更清洁的方式工作有任何想法?我还想避免使用属性,因此它会迫使开发人员决定在控件中的某个点注入变量。
欢迎所有的想法和感受。
谢谢