Nun, ja und nein.
Sie können, wie Steve vorgeschlagen hat, eine weitere, dritte Schnittstelle erstellen, die von den zwei gewünschten abstammt, und diese für den Parametertyp verwenden.
Dies erfordert jedoch auch, dass die verwendete Klasse auch diese dritte Schnittstelle implementiert.
Mit anderen Worten, wird dies nicht funktionieren:
public interface I1 { }
public interface I2 { }
public class C : I1, I2 { }
public interface I3 : I1, I2 { }
public class YourClass
{
public void Test(I3 i) { }
}
...
YourClass yc = new YourClass();
C c = new C();
yc.Test(c); // won't work, C does not implement I3
Sie können jedoch den Compiler tricksen, was Sie von Generika durch wollen.
public class YourClass
{
public void Test<T>(T i) where T: I1, I2 { }
}
Jetzt wird es funktionieren. Ich bin mir immer noch nicht 100% ig sicher, dass es dir keine anderen Probleme geben wird, ich müsste darüber nachdenken.
Sie können [den gleichen Trick wie für die Deklaration einer Membervariable] (http://stackoverflow.com/a/4940249/429091) verwenden, obwohl dieser Ansatz das Implementieren von Klassen erfordert, um sich für das Muster zu entscheiden. – binki