2014-04-10 99 views
0

我有兩個類如下,一個從另一個繼承。沒有必要爲這種情況實施。是否有任何方法來轉換實例的類型

Class super 
{ 
    //nothing 
} 
Class sub:super 
{ 
    //nothing 
} 

現在我創建一個實例如下聲明

sub actualSub=new sub(); 

所以,我們有一個實例actualSub。哪個類型的對象指針是類型sub和實際類型是sub。

考慮他們的繼承關係,有什麼辦法將actualSub的實際類型轉換爲超級? 換句話說,我怎麼能使actualSub.GetType()返回類型超? 語言是CSharp。

+0

你爲什麼想這樣做擺在首位? – CinCout

+0

@gargankit WCF不能加密Sub,我也不能在Super [Datacontract]下面添加一個[KnownType(typeof(Sub))]屬性作爲Sub類,事實上客戶端不應該知道它。所以我認爲唯一的方式是將Sub類型轉換爲超類型。 – jojo

+0

爲此,您必須創建'super'而不是'sub'的實例。目前尚不清楚你想要達到的目標。 –

回答

0

不,這是不可能的 - GetType返回對象的實際類型,並且無法改變該行爲。

你可以考慮做副本,如果基類有某種形式的拷貝構造函數...

+0

對不起,我的錯誤,其實我創建了一個子實例,並希望通過WCF傳遞它。 – jojo

0
actualB.GetType().BaseType.Dump(); 
相關問題