Пожалуйста, взгляните на мою структуру класса. Я думаю, что хотел бы получить больше удовольствия от наследования, чем это возможно.
Во-первых, это базовый абстрактный класс :
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()'
Я не уверен, какие модификаторы я должен использовать здесь, чтобы заставить его работать. Может быть, мне также следует написать, чего я хотел бы достичь :У меня есть коллекция объектов политики разных типов (, например. PolicyAccident, PolicyTravel и т. д. ), которые наследуются от PolicyDetailed с различными типами DataContainer (AccidentContainer, TravelContainer и т. д. ). Я хотел бы вызвать метод «GetActiveAsset» для каждого из них, не зная их конкретного типа и ссылаясь на них через PolicyDetailed. В то же время я хотел бы, чтобы каждый класс возвращал свой конкретный подкласс Datacontainer. Это возможно?