我有一個關於C#中繼承的問題。我有一個定義受保護虛擬成員的公共抽象類A.我有另一個從A繼承的抽象類B,然後是從B繼承的另一個內部類C.第一個類A位於單獨的名稱空間中,另外兩個位於相同的名稱空間中,但包含對第一個類的引用。從抽象類繼承C#
我試圖使用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'
}
}
你應該包括一個你想要做的事情的小代碼示例。這會更容易理解。 –
@JoelGauvreau由於這裏的層次結構非常簡單,我不覺得需要提供代碼示例。它與我所描述的幾乎一樣。 – Setafire
你所描述的將會工作得很好。這可能是您的代碼中的錯誤。除非我們看到它,否則我們不知道它是什麼。你說你「無法」,這是什麼意思?你有一個編譯器或運行時錯誤?如果是這樣,哪一個? –