クラス クラス 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 にはすべての As と B が格納されますが、コード内のいくつかの場所からアクセスされます。
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 であるが A のようにカーストを取得する場合、オブジェクトが Xlist からプルされるたびに、getAData()
関数を自動的に呼び出し、その結果の A を返します。これは可能ですか??