2010-10-21 34 views
4

我正在嘗試使用繼承進行封裝。實際上,我正在使用具有非常通用名稱的反序列化代碼,並且我正在尋找在包裝內部對象的方法上節省一些擊鍵。能不能在C#中完成沒有數據成員的派生類?

public class Base 
{ 
    public string Foo { get; set; } 
} 

public class Derived : Base 
{ 
    public string Bar { get { return this.Foo; } } 
} 

Base base = new Base(); 

Derived d = (Derived)base; 

我試圖向下傾斜時出現錯誤。這種類型的東西可能在C#中嗎?在派生類中沒有額外的數據,所以我的C++大腦告訴我一個downcast是可能的...

回答

8

沒有。類標識不僅僅是數據佈局決定的(對於非POD類型,C++也是如此)。

您可能想要考慮使用擴展方法來添加不需要存儲其他數據的其他功能。

+0

謝謝,我從來沒有想過在沒有參數的情況下使用擴展方法。回覆:C++ - 我想我回想起我可能已經使用數據佈局的知識來做明確的C風格轉換,但這與繼承沒有關係。 – 2010-10-21 02:25:16