私のクラス構成を見てください。相続をもっと楽しみたいと思います。
まず、基本抽象クラスがあります。
public abstract class PolicyDetailed
{
internal abstract DataContainer GetActiveAsset();
}
次に、汎用的な別の抽象クラスがあります。
public abstract class PolicyDetailed<T> : PolicyDetailed where T : DataContainer
{
internal new abstract T GetActiveAsset();
}
最後に、特定のポリシークラスがあります。AccidentContainerはDataContainerから継承します。
public class PolicyAccident : PolicyDetailed<AccidentContainer>
{
internal override AccidentContainer GetActiveAsset()
{
return null;
}
}
コンパイル中に、次のエラーが発生します。
'PolicyAccident' does not implement inherited abstract member 'PolicyDetailed.GetActiveAsset()'
ここで機能させるためにどの修飾子を使用すべきかわかりません。達成したいことも書く必要があるかもしれません。さまざまなタイプのDataContainer(AccidentContainer、TravelContainerなど)でPolicyDetailedから継承するさまざまなタイプ(PolicyAccident、PolicyTravelなど)のポリシーオブジェクトのコレクションがあります。特定のタイプを知らずに、PolicyDetailedを介して参照せずに、それぞれで「GetActiveAsset」メソッドを呼び出したいと思います。同時に、各クラスが特定のDatacontainerサブクラスを返すようにします。それは可能ですか?