2017-05-26 93 views
0

有什么方法可以使用约束来检查方法参数是否实现多个接口?如何检查方法参数是否实现多个接口

拿这个简单的例子,用来检查是否τ响应已经执行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 {} 

但这个报告已经用于类型τ响应 一个限制条款,:

public static TResponse Search<TResponse, TRequest>(TRequest args) 
    where TResponse : (IBaseSearchArgs && IBaseSearchProps) {} 

这只是非法语法

我如果我的问题没有准备好,在其他地方回答,或者如果答案在c#规范中定义,我会提前道歉...,我至少在这里查看了一下

回答

6

你需要用逗号将它们分开(,):

例如

public static TResponse Search<TResponse, TRequest>(TRequest args) 
where TResponse : IBaseSearchArgs , IBaseSearchProps {...} 
+0

啊...不能更简单或让我感觉更愚蠢吗...... – axa

2

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

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