2017-05-26 3 views
0

Gibt es eine Möglichkeit, mithilfe von Integritätsbedingungen zu überprüfen, ob ein Methodenargument mehr als eine Schnittstelle implementiert?Überprüfen, ob ein Methodenargument mehrere Schnittstellen implementiert

dieses einfache Beispiel, das überprüft, ob tAntwort IBaseSearchResponse umgesetzt hat:

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

Aber ich möchte auch wissen, ob es IBaseSearchProps implementiert. Ive versucht, eine Einschränkung hinzufügen, indem Sie Dinge wie tun:

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

Aber diese meldet Einschränkungen Klausel bereits verwendet für Typ tAntwort Und:

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

dies ist nur illegal Syntax

I Entschuldige dich im Voraus, wenn meine Frage schlecht vorbereitet ist, anderswo geantwortet wurde oder wenn die Antwort in der C# Spezifikation definiert ist ..., ich habe zumindest danach gesucht

Antwort

6

Sie sie durch ein Komma (,) zu trennen brauchen werden:

z.B.

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

ah ... könnte nicht einfacher sein oder mich dümmer fühlen lassen kann es ... – axa

2

Es ist eine durch Kommata getrennte Liste:

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