C# 如何从泛型对象列表继承

C# 如何从泛型对象列表继承,c#,generics,inheritance,C#,Generics,Inheritance,我使用泛型类型GetOption需要1个类型参数得到错误。错误来自我从列表继承的第一行 我正在尝试建立一个继承结构,在这个结构中,我可以对基本对象进行所有处理,并使细节驻留在子对象中。子对象的数量为N个。在实例化时,需要通知基础对象子类型 父most类将从列表继承,因此我可以在父most对象中具有列表的功能,用于添加泛型子对象,其类型将在实例化时通知 以下是我到目前为止的情况: 前两个类是基类 public abstract class GetOptions : List<GetOptio

我使用泛型类型
GetOption
需要1个类型参数得到错误。错误来自我从
列表继承的第一行

我正在尝试建立一个继承结构,在这个结构中,我可以对基本对象进行所有处理,并使细节驻留在子对象中。子对象的数量为N个。在实例化时,需要通知基础对象子类型

父most类将从列表继承,因此我可以在父most对象中具有列表的功能,用于添加泛型子对象,其类型将在实例化时通知

以下是我到目前为止的情况:

前两个类是基类

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抽象类GetOptions:List
{
公共枚举筛选器方向
{
提升
下降的
}
专用筛选器方向\u筛选器方向;
公共筛选器方向筛选器方向
{
获取{return\u filterDirection;}
设置{u filterDirection=value;}
}
公共获取选项()
{
FilterDirection=FilterDirections.升序;
}
}
公共抽象类GetOption
{
私有枚举列;
公共枚举列
{
获取{return\u column;}
设置{u column=value;}
}
公共GetOption()
{
}
}
最后两个类是示例子类

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>
{

}
公共类PersonTypeLookupGetOptions:GetOptions { public PersonTypeLookupGetOptions():base(){} } 公共类PersonTypeLookupGetOption:GetOption { }
我将如何完成我想做的事情

编辑:

我想做的是在我从子对象继承的列表中定义对象的类型

有了第一个问题下的评论,我能够找到我需要的解决方案。类别定义如下:

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>

公共抽象类GetOptions:List其中child:GetOption
公共抽象类GetOption
公共类PersonTypeLookupGetOptions:GetOptions
公共类PersonTypeLookupGetOption:GetOption

不清楚您想做什么,但有一件事可能会帮助您将泛型参数传播到集合类型:

public abstract class GetOptions<EnumT> : List<GetOption<EnumT>>

public抽象类GetOptions:List
父most类将从列表继承,因此我可以在父most对象中具有列表的功能,用于添加在运行时将通知其类型的泛型子级


请注意,泛型是在编译时绑定的,而不是在运行时绑定的

虽然我不知道你更大问题的解决方案,但我相当肯定你的错误是由于你使用了
List
,而编译器需要
List
。话虽如此,我真的不明白你来这里干什么


编辑:看起来更像是希望
GetOption
成为一个没有
部分的类,然后希望从
列表继承。因此,将基类改为
GetOption
而不是
GetOption
可以解决您的问题。

公共抽象类GetOptions:List