0
對不好的標題感到難以縮小這個問題的相關性。在單獨的基類中自動將調用強制轉換爲基類變量
我有兩個基本上並行構建的類層次結構:對於BaseObject的每個子類型,都有一個BaseUIObject的子類型。具體原因是因爲BaseObjects實際上是腳本化對象(unity),所以我使用另一組類來表示這些腳本對象之一的每個實例。
示例代碼:
public abstract class BaseUIObject {
public BaseObject someObject;
public void Setup(BaseObject baseObject)
{ this.baseObject = baseObject; }
}
public class SomeUIObject : BaseUIObject {
public void Setup(SomeObject someObject)
{ base.Setup(someObject); SomeUIObjectSpecificRoutine(); }
private void SomeObjectSpecificRoutine() {
someObject.doSubClassFunction();
}
}
當通過類型SomeObject的目的是SomeUIObject的安裝程序時,就變成存儲爲BaseObject代替SomeObject。有沒有乾淨的方法來防止這種情況發生?
現在我有兩個選擇是要麼在BaseUIObject的每個子類中定義someObject變量,要麼每次在SomeUIObject的方法中使用它時顯式強制轉換(SomeObject)someObject。這些方法都不是很乾淨,我覺得必須有一些更好的方法來使用繼承來實現這一點。
感謝您的任何幫助。
完美 - 這正是我之後我,但缺乏知識能夠正常使用谷歌。感謝您的快速回復,會看到這是否有效。 – Cerzi
在SomeUIObject的類型/名稱空間的Setup()arg中找不到類型T的問題。 我也許應該注意到,BaseUIObject本身從另一個類繼承,所以其實際的定義是: 公共抽象類BaseUIObject:OtherBaseClass其中T:BaseObject –
Cerzi
T型是你使用的繼承聲明的類型。你的代碼現在如何? –