我一直在通过程序类将依赖项注册到我的IOC容器中,但是它很混乱。我决定写一个DI提供程序,在其中提供并注册依赖项。
在我开始用代码解释之前,这是VS给的完整编译错误。
“ ServiceCollection”不包含“ AddSingleton”的定义
无法解析符号“ AddSingleton”
我试图尽可能保持整洁,在DependencyProvider
中继承了ServiceCollection类
public class DependencyProvider : ServiceCollection, IDependencyProvider
{
public DependencyProvider() : base()
{
Register();
}
public void Register()
{
base.AddSingleton<IContext, Context>(); // this line errors
new ServiceCollection().AddSingleton<IContext, Context>(); // this line works
}
}
这是IDependencyProvider接口
public interface IDependencyProvider : IServiceCollection
{
void Register();
}
我不能这样做,还是我做错了什么?我真的希望它是可行的,因为该解决方案似乎超级干净,以便创建一个新的ServiceCollection实例并为其使用字段。
只是为了澄清错误,我无法访问
ServiceCollection
上的任何基本方法,像这样base.AddSingleton<IContext, Context>();
但是,当内联新实例时,此行有效
new ServiceCollection().AddSingleton<IContext, Context>();
最佳答案
base
关键字不能解析扩展方法。您想要做的是:
this.AddSingleton<IContext, Context>();