无法从外部父类访问基类方法?

时间:2018-08-31 14:57:53

标签: c# .net

我想编写一个依赖提供程序来注册我的依赖。我继承了ServiceCollection类,这意味着我应该获取该类中的所有方法,对吗?错了,看来。

您可以看到广告,我继承了它,并使用this.关键字进行了注册,但没有错误。

public class DependencyProvider : ServiceCollection, IDependencyProvider
{
    public DependencyProvider() : base()
    {
        Register();
    }

    public void Register()
    {
        this.AddSingleton<ICoreContext, CoreContext>();
    }
}

在不添加AddSingleton的情况下调用this.会引发错误,表明在添加this时找不到该方法。它按预期工作。如果我需要在该类的实例上访问它,该怎么办?

这还意味着,如果我想访问此类之外的任何方法,则必须在DependencyProvider类中重复该方法,但这并不是很有效。

这是IDependencyProvider界面

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

1 个答案:

答案 0 :(得分:2)

就像我here回答您一样,AddSingletonIServiceCollection的扩展方法。这意味着,如果要在DependencyProvider中使用它,则需要使用this.AddSingleton或直接ServiceCollectionServiceExtensions.AddSingleton引用该方法。

  

不带此调用AddSingleton。在添加此方法时抛出错误,指出找不到方法。它按预期工作。如果我需要在该类的实例上访问它,该怎么办?

好吧,在这种情况下,您只需按预期使用它即可即可:

var myProvider = new DependencyProvider();
myProvider.AddSingleton<ICoreContext, CoreContext>();