抽象クラスに基づいてクラスを作成し、基本クラスに含まれる関数を、クラスによって渡される型である "T" の戻り値の型を持つ別の関数で上書きしようとしています。
例えば:
public abstract class DayInfo
{
public virtual void GetInfo()
{
throw new NotImplementedException();
}
}
public class DayInfo<T> : DayInfo
{
private T info;
public DayInfo(T data)
{
info = data;
}
public T GetInfo() // << This
{
return info;
}
}
例:
1
DayInfo info = new DayInfo<String>("Blah");
String stuff = info.GetInfo();
2
DayInfo info = new DayInfo<int>(25);
int stuff = info.GetInfo();
これを達成する方法はありますか?
編集1:型を定義せずにジェネリック型として使用できるようにしたかったため、基本クラスでクラス渡し型を使用しなかったことを正確に忘れていました。
例えば:
public SortedDictionary<int, DayInfo> Data = new SortedDictionary<int, DayInfo>();
編集2:
また、基本クラスの仮想関数のポイントは、GetInfo() 関数がアクセスされたがオーバーライドされていない場合に、子クラスが例外をスローするようにすることです。