【发布时间】:2014-05-23 15:56:53
【问题描述】:
我有一个用作父类的类,它具有我想在派生类中覆盖的 c () 函数,但基类 c 函数被调用。这是我的类的伪代码。可能是这个关键字一起赋予了它不同的含义
public Class BaseRepository
{
public A()
{
this.c();
}
public B()
{
this.c();
}
protected virtual c()
{
enter code here
}
}
当我派生这个类时
class customRepo:BaseRepository
{
protected override c()
{
...does something
}
}
我的自定义 repo 函数没有使用自定义 repo 类中的c(),而是使用基本 repo 类
正在使用功能。谁能告诉我为什么会这样???
【问题讨论】:
-
如果您实际处理的是 customRepo 类的实例,这看起来是正确的。您的问题可能是您覆盖的 c 函数调用了
base.c();? -
你怎么称呼它?您是否实例化了自定义 Repo 或 BaseRepository?如果你实例化了基类,它对派生类一无所知。
-
+1 McAden 和 Bradley.Net。请说明您如何调用 c() 以及方法中可能的相关部分。
-
如果您可以尝试将 BaseRepository 抽象化,那么如果您确实在创建基类的实例(我们都怀疑您是这样),您将收到编译器错误
-
我刚刚在我的机器上做了一个示例,它调用了派生的
c函数。你应该给我们一个SSCCE,它实际上证明了这个问题
标签: c# inheritance this virtual