请看看我的班级结构。我想我想继承更多的乐趣。C# - 高级继承
首先出现的是一个抽象基类:
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子类。那可能吗?
对于您声明特定容器类型是否返回其特定策略类型是否真的很重要?你说你想引用返回的对象作为PolicyDetailed,这样你就失去了具体的信息! (请记住,AccidentContainer _IS_ DataContainer和AccidentContainer因此可以从返回类型为DataContainer的方法返回,而根本不会更改任何签名) – olagjo 2012-08-05 22:02:47
我在代码的其他部分需要它,我在其中引用特定类型的策略并使用它容器。我可能会考虑使用两种方法 - 一种会返回一个DataContainer对象,其次可能会返回一个特定的容器(但它感觉很笨拙) – Rummy 2012-08-06 12:51:17