我希望能够指定类似的内容:
public abstract class ColumnFilter<TCell, TFilterControl> : ColumnFilter
where TFilterControl : FilterControl<>, new()
where TCell : IView, new()
{
}
Class FilterControl&lt;&gt;是一个基类。我不知道FilterControl&lt;&gt;。
的通用参数是什么答案 0 :(得分:4)
您不能在类型约束中使用未绑定的泛型类型。您必须添加第三个类型参数,如下所示:
public abstract class ColumnFilter<TCell, TFilterControl, TFilterControlType> : ColumnFilter
where TFilterControl : FilterControl<TFilterControlType>, new()
where TCell : IView, new()
{
}
或者创建FilterControl
的非通用基本类型:
public FilterControl { }
public FilterControl<T> : FilterControl { }
public abstract class ColumnFilter<TCell, TFilterControl> : ColumnFilter
where TFilterControl : FilterControl, new()
where TCell : IView, new()
{
}
如果要强制使用者使用通用派生类型,也可以使用abstract
构造函数创建基类型internal
。
答案 1 :(得分:1)
ColumnFilter
将被告知该类型将是什么。
添加第三个泛型类型参数,如下所示:
public abstract class ColumnFilter<TCell, TFilterControl, TFilter> : ColumnFilter
where TFilterControl : FilterControl<TFilter>, new()
where TCell : IView, new()
{
}
答案 2 :(得分:0)
问题是你认为FilterControl&lt;&gt;是一个基类。事实并非如此,将其视为模板。在给出&lt;&gt;。
中的内容的上下文之前,它没有任何实质内容