Beh, sì e no.
È possibile, come suggerito da Steve, creare un'altra terza interfaccia che discende dalle due che si desidera e utilizzarla per il tipo di parametro.
Tuttavia, ciò imporrà anche che la classe in uso esegua anche quella terza interfaccia.
In altre parole, questo non funzionerà:
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
Tuttavia, si può ingannare il compilatore in ciò che si vuole per mezzo di farmaci generici.
public class YourClass
{
public void Test<T>(T i) where T: I1, I2 { }
}
Ora funzionerà. Non sono ancora sicuro al 100% che non ti daranno altri problemi, dovrei pensarci.
fonte
2009-04-21 11:05:53
È possibile utilizzare [lo stesso trucco utilizzato per dichiarare una variabile membro] (http://stackoverflow.com/a/4940249/429091), sebbene questo approccio richieda l'implementazione di classi per l'attivazione del modello. – binki