“ ServiceCollection”不包含“ AddSingleton”的定义

时间:2018-08-27 22:34:20

标签: c# asp.net .net dependency-injection

我一直在通过程序类将我的依赖项注册到我的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>();

1 个答案:

答案 0 :(得分:6)

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

this.AddSingleton<IContext, Context>();