‘ServiceCollection’不包含’AddSingleton’的定义

我一直在通过程序类将我的依赖项注册到我的IOC容器,但它变得很乱。 我决定编写一个DI提供程序,它提供并注册了它内部的依赖项。

在我开始解释代码之前,这是VS给出的完整编译错误。

‘ServiceCollection’不包含’AddSingleton’的定义无法解析符号’AddSingleton’

我试图尽可能干净,在DependencyProvider包含ServiceCollection类

 public class DependencyProvider : ServiceCollection, IDependencyProvider { public DependencyProvider() : base() { Register(); } public void Register() { base.AddSingleton(); // this line errors new ServiceCollection().AddSingleton(); // this line works } } 

这是IDependencyProvider接口

 public interface IDependencyProvider : IServiceCollection { void Register(); } 

我可以不这样做,还是我只是做错了什么? 我真的希望它可能,因为解决方案看起来非常干净,请创建一个新的ServiceCollection实例并使用该字段。

只是为了澄清错误,我无法访问ServiceCollection上的任何基本方法,就像这样

 base.AddSingleton(); 

但是这条线在内联新实例时起作用

 new ServiceCollection().AddSingleton(); 

base关键字不解析扩展方法。 你想要做的是:

 this.AddSingleton();