我有一個類A級,和B.類類 類B是類A的一個子使得:執行子類方法時稱爲父
public class Class A
{
public DateTime FileStart
{
get
{
return Header.StartTime;
}
set{ }
}
...
...
}
和
public class B : A
{
FileInfo zippedA;
public A myA = null;
internal B(FileInfo mFileInfo)
{
...
//collects the same data as A from the fileinfo such as start time...
...
}
public A getAData()
{
UnZipFile(zippedA);
return myA;
}
...
}
所以我在尋找一種方式來調用getAData()
每當B
對象被稱爲A
例如列表中的Xlist存儲所有作爲和燒烤,但會從代碼的幾個地方訪問:
SortedList Xlist = new SortedList();
public void GetFrames(DateTime desiredStartTime, DateTime desiredEndTime)
{
for(int fileIdx = Xlist.Values.Count-1; fileIdx >= 0; --fileIdx)
{
//my hope is that there is a way to set up B in it's class to say
// "if I get called as an A, I'll perform getAData() and return myA instead.
A rec = (A)Xlist.GetByIndex(fileIdx);
...
...
}
}
在上面的例子中,我想對於每個如果其B中的對象是從的Xlist拉,但得到種姓作爲一個像這樣的時間
,它會自動調用getAData()
功能並返回結果的,而不是它的自我。這可能嗎??
從這麼多的信息來說太難說了,但是繼承似乎是不好的方法。現在,@ evanmcdonnal的回答將讓你擺脫監獄。但我會看B有一個A而不是A(聚合)或委託解壓縮。你走的路越遠,設計越糟糕。 A會結束大量虛無的虛擬方法,你可能會或可能不會在後代覆蓋。 –