有没有办法使用约束来检查方法参数是否实现了多个接口?
以这个简单的例子来检查TResponse是否实现了IBaseSearchResponse:
public static TResponse Search<TResponse, TRequest>(TRequest args)
where TResponse : IBaseSearchResponse {}
但我想知道它是否实现了IBaseSearchProps。 我曾尝试通过以下方式添加约束:
public static TResponse Search<TResponse, TRequest>(TRequest args)
where TResponse : IBaseSearchArgs where TResponse : IBaseSearchProps {}
但是这会报告已经用于TResponse类型的约束条款 和
public static TResponse Search<TResponse, TRequest>(TRequest args)
where TResponse : (IBaseSearchArgs && IBaseSearchProps) {}
这只是非法语法
如果我的问题准备不足,在其他地方回答,或者如果答案在c#规范中定义,我事先道歉,我至少在这里看了一下
答案 0 :(得分:6)
您需要用逗号(,
)分隔它们:
e.g。
public static TResponse Search<TResponse, TRequest>(TRequest args)
where TResponse : IBaseSearchArgs , IBaseSearchProps {...}
答案 1 :(得分:2)
这是逗号分隔的列表:
public void F<T>(T t)
where T : IEnumerable, IFooBar
{
}