C# 如何检查方法参数是否实现了多个接口

C# 如何检查方法参数是否实现了多个接口,c#,interface,constraints,C#,Interface,Constraints,有没有办法使用约束来检查方法参数是否实现了多个接口 以下面这个简单的示例为例,检查TreResponse是否实现了IBaseSearchResponse: public static TResponse Search<TResponse, TRequest>(TRequest args) where TResponse : IBaseSearchResponse {} 但我也想知道它是否实现了IBaseSearchProps。 我尝试通过以下方式添加约束: public s

有没有办法使用约束来检查方法参数是否实现了多个接口

以下面这个简单的示例为例,检查TreResponse是否实现了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 {}
但是,这报告了一个已经用于类型响应的约束子句 以及:

这只是非法的语法


如果我的问题准备不充分,或者在其他地方得到了回答,或者如果答案是在c规范中定义的,我提前表示歉意。我至少在这里查看了一下它

它是一个逗号分隔的列表:

public void F<T>(T t) 
    where T : IEnumerable, IFooBar
{
}

您需要用逗号分隔它们:

e、 g

public void F<T>(T t) 
    where T : IEnumerable, IFooBar
{
}
public static TResponse Search<TResponse, TRequest>(TRequest args)
where TResponse : IBaseSearchArgs , IBaseSearchProps {...}