我們有一系列的類,這是從一個共同的類派生:鑄造類和設置共同的社會價值觀
public class OurBaseClass
{
public string StatusMessage { get; set;}
[other properties]
}
public class ProcessClass : OurBaseClass
{
public string SomeProcessInformation { get; set;}
public string SomeMoreProcessInformation { get; set;}
[other properties]
}
我們則試圖建立一個單一的功能設置SpecificProcessClass和電流的基本屬性有(其中不工作):
public object DefaultResponse(string messageText)
{
return new OurBaseClass
{
StatusMessage = messageText,
[other properties] = ...
}
};
的意圖,我們可以有
ProcessClass resp = (ProcessClass) DefaultResponse("Some Message");
resp.SomeProcessInformation = "";
resp.SomeMoreProcessInformation = "";
[other properties] = ...
return resp;
推理的目的是爲了最大限度地減少重複編碼的數量,並使得功能易於閱讀(通過眼睛);這是爲以下內容拋出一個錯誤。
System.InvalidCastException: Unable to cast object of type 'OurBaseClass' to type 'ProcessClass'
雖然在結果不完全感到意外,因爲ProcessClass從OurBaseClass衍生,我會認爲這是可能做到這一點,只是不知道如何...
這是不可能蒙上了基類的一個實例(少特定的類)派生類的一個實例(更具體的類),因爲派生類可以/應該具有比基類更多的功能。另一種方式工作得很好,您可以將派生類的實例轉換爲基類的實例。 –