我对 C# 中的继承有疑问。我有一个定义受保护虚拟成员的公共抽象类 A。我有另一个从 A 继承的抽象类 B,然后是另一个从 B 继承的内部类 C。第一个类 A 在单独的命名空间中,另外两个在同一个命名空间中,但包含对第一个的引用。
我试图使用 base 关键字访问 C 中 A 的受保护虚拟成员,但除非我在 B 中提供一个方法然后在那里调用 A 的受保护虚拟成员,否则我无法访问。
我想知道我试图做的事情是否可行,即我做错了什么?或者如果不可能,那为什么?谢谢。
这是代码示例:
namespace A
{
public abstract class BaseClass
{
protected virtual string GetData()
{
//code to get data
}
}
}
namespace B //includes a reference to A
{
abstract class DerivedClassA : BaseClass
{
}
internal class DerivedClassB: DerivedClassA
{
public void write()
{
base.GetData(); // results in error.
// The name 'GetData' does not exist in the current context
// and DerivedClassA does not contain a definition for 'GetData'
}
}