我一直在通过程序类将我的依赖项注册到我的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>();
答案 0 :(得分:6)
base
关键字不能解析扩展方法。您想做的是:
this.AddSingleton<IContext, Context>();