首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >“ServiceCollection”不包含“AddSingleton”的定义

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

Stack Overflow用户
提问于 2018-08-28 06:34:20
回答 1查看 1.1K关注 0票数 1

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

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

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

我尽量保持干净,在DependencyProvider中继承了ServiceCollection类

代码语言:javascript
运行
复制
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接口

代码语言:javascript
运行
复制
public interface IDependencyProvider : IServiceCollection
{
    void Register();
}

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

为了澄清错误,我不能访问ServiceCollection上的任何基本方法,如下所示

代码语言:javascript
运行
复制
base.AddSingleton<IContext, Context>();

但是,当创建一个新的内联实例时,这行代码是有效的

代码语言:javascript
运行
复制
new ServiceCollection().AddSingleton<IContext, Context>();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-28 06:47:55

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

代码语言:javascript
运行
复制
this.AddSingleton<IContext, Context>();
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52047779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档