[英]Generic type in generic constraint
我希望能够指定这样的东西:
public abstract class ColumnFilter<TCell, TFilterControl> : ColumnFilter
where TFilterControl : FilterControl<>, new()
where TCell : IView, new()
{
}
类FilterControl <>是一个基类。 我不知道FilterControl <>的泛型参数是什么。
您不能在类型约束中使用未绑定的泛型类型。 你必须添加第三个类型参数,如下所示:
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()
{
}
如果要强制使用者使用泛型派生类型,也可以使用internal
构造函数创建基类型abstract
。
必须告诉ColumnFilter
该类型是什么。
添加第三个泛型类型参数,如下所示:
public abstract class ColumnFilter<TCell, TFilterControl, TFilter> : ColumnFilter
where TFilterControl : FilterControl<TFilter>, new()
where TCell : IView, new()
{
}
问题是你认为FilterControl <>是一个基类。 事实并非如此,将其视为模板。 在给出<>内部的内容之前,它没有任何实质内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.