c# - 不能从父类外部访问基类方法?
问题描述
我想编写一个依赖提供者来注册我的依赖。我继承了 ServiceCollection 类,这意味着我应该获取该类中的所有方法,对吧?错了,好像是这样。
您可以看到,我继承它,使用this.
关键字注册它,但没有它会出错。
public class DependencyProvider : ServiceCollection, IDependencyProvider
{
public DependencyProvider() : base()
{
Register();
}
public void Register()
{
this.AddSingleton<ICoreContext, CoreContext>();
}
}
调用AddSingleton
withoutthis.
会抛出一个错误,说它找不到方法,同时添加this
. 它按预期工作。如果我需要在类的实例上访问它怎么办?
这也意味着如果我想访问这个类之外的任何方法,我必须复制 DependencyProvider 类中的方法,这不是很有效。
这是IDependencyProvider
界面
public interface IDependencyProvider : IServiceCollection
{
void Register();
}
解决方案
就像我在这里回答你的,AddSingleton
是关于扩展方法的IServiceCollection
。这意味着如果您想在内部使用它,DependencyProvider
您需要this.AddSingleton
直接使用或引用该方法ServiceCollectionServiceExtensions.AddSingleton
。
在没有这个的情况下调用 AddSingleton。抛出一个错误,说它找不到方法,同时添加这个。它按预期工作。如果我需要在类的实例上访问它怎么办?
好吧,在这种情况下,您只需按预期使用它:
var myProvider = new DependencyProvider();
myProvider.AddSingleton<ICoreContext, CoreContext>();
推荐阅读
- java - 如何从jsp中的控制器获取json数据?
- python-3.x - 使用同一行中的文本替换多行字符串中的文本
- python - df[~df.id.isin 没有从原始 df 中删除任何内容
- javascript - 如何为每个人更新 javascript 变量?
- azure - 是否可以将通过 azure bot 服务的 Direct Line API 协议用于本地环境?
- cors - 跨域的 fetch() 导致 JSON.parse 错误
- reactjs - 如何使用带有箭头函数的 React State 使用 try catch 处理错误
- ms-word - Office 加载项信息不会显示在 Windows 10 的任务窗格中,但适用于 Mac
- javascript - React hooks useMemo, false 作为依赖
- c# - 如何在windows窗体中的一个richtextbox中显示多个列的数据C#