可能的重复:
如何创建从具有不同类型的同一泛型类继承的对象列表? https://stackoverflow.com/questions/7066506/how-do-i-create-a-list-of-objects-that-inherit-from-the-same-generic-class-with-v
我正在使用几个从抽象类继承的对象。但要使用抽象类必须声明通用数据类型。
我遇到问题,因为我需要一个包含 ProblemBase 列表的列表,尽管每个列表都包含不同的 TResult 数据类型。
public abstract class ProblemBase<TResult>
{
TResult[] Array;
}
我想获得数组属性。那就是问题所在。
这种事情在我身上经常发生。我通常采用的解决方案是有一个基类ProblemBase<T>
这是无类型的:
public abstract class ProblemBase
{
public abstract object Result { get; }
}
public abstract class ProblemBase<TResult> : ProblemBase
{
public override object Result
{
get { return Result; }
}
new public TResult Result { get; private set; }
}
每当你需要问题的集合时,你就可以制作一个集合ProblemBase
没有泛型。
If TResult
有自己所需的继承层次结构,那么你可以这样做:
public abstract class ProblemBase
{
public abstract ResultBase Result { get; }
}
public abstract class ProblemBase<TResult> : ProblemBase
where TResult : ResultBase
{
public override ResultBase Result { get { return Result; } }
new public TResult Result { get; private set; }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)