无法从外部父类访问基类方法? [重复]

问题描述 投票:-2回答:1

这个问题在这里已有答案:

我想编写一个依赖提供程序来注册我的依赖项。我继承了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();
}
c# .net
1个回答
2
投票

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

没有这个就调用AddSingleton。抛出一个错误,说它找不到方法,同时添加它。它按预期工作。如果我需要在类的实例上访问它怎么办?

那么,在这种情况下,你只需要按照你的期望使用它:

var myProvider = new DependencyProvider();
myProvider.AddSingleton<ICoreContext, CoreContext>();
© www.soinside.com 2019 - 2024. All rights reserved.