【发布时间】:2013-04-09 15:42:45
【问题描述】:
我收到错误使用泛型类型 GetOption<EnumT> 需要 1 个类型参数。错误来自我从List<GetOption>继承的第一行
我正在尝试建立一个继承结构,我可以在其中对基础对象进行所有处理,并将细节保存在子对象中。子对象的数量为 N。基础对象需要在实例化时被告知子类型。
最父类将从 List 继承,因此我可以在最父对象中拥有列表的功能,用于添加将在实例化时通知其类型的通用子级。
这是我目前所拥有的:
前两个类是基类
public abstract class GetOptions : List<GetOption>
{
public enum FilterDirections
{
Ascending,
Descending
}
private FilterDirections _filterDirection;
public FilterDirections FilterDirection
{
get { return _filterDirection; }
set { _filterDirection = value; }
}
public GetOptions()
{
FilterDirection = FilterDirections.Ascending;
}
}
public abstract class GetOption<EnumT>
{
private EnumT _column;
public EnumT Column
{
get { return _column; }
set { _column = value; }
}
public GetOption()
{
}
}
最后两个类是示例子类
public class PersonTypeLookupGetOptions : GetOptions
{
public PersonTypeLookupGetOptions() : base() { }
}
public class PersonTypeLookupGetOption : GetOption<PersonTypeLookup.PersonTypeLookupFields>
{
}
我将如何完成我想做的事情?
编辑:
我要做的是在我从子对象中继承的列表中定义对象的类型。
根据我第一个问题下的评论,我能够找到我需要的解决方案。类定义如下:
public abstract class GetOptions<ChildT, EnumT> : List<ChildT> where ChildT : GetOption<EnumT>
public abstract class GetOption<EnumT>
public class PersonTypeLookupGetOptions : GetOptions<PersonTypeLookupGetOption, PersonTypeLookup.PersonTypeLookupFields>
public class PersonTypeLookupGetOption : GetOption<PersonTypeLookup.PersonTypeLookupFields>
【问题讨论】:
-
public abstract class GetOptions<EnumT> : List<GetOption<EnumT>>
标签: c# generics inheritance