2017-05-26 17 views
0

メソッドの引数が複数のインターフェイスを実装しているかどうかを確認するために、制約を使用する方法はありますか?メソッドの引数が複数のインターフェイスを実装しているかどうかを確認する方法

はた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 && IBaseSearchProps) {} 

これは単なる不正な構文です:

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

しかし、これはすでに型たTResponse のために使用される制約句を報告し、私の質問があまり準備されていない場合や他の場所で回答されている場合や、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 
{ 
} 
関連する問題