繁体   English   中英

泛型约束中的泛型类型

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM