С#-расширенное наследование

Пожалуйста, взгляните на мою структуру класса. Я думаю, что хотел бы получить больше удовольствия от наследования, чем это возможно.

Во-первых, это базовый абстрактный класс :

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. Это возможно?

5
задан Rummy 5 August 2012 в 20:21
поделиться