Bueno, sí y no.
Puede, como Steve ha sugerido, crear otra, tercera, interfaz que desciende de las dos que desea, y usar eso para el tipo de parámetro.
Sin embargo, esto también hará que sea un requisito que la clase que se está utilizando implemente también esa tercera interfaz.
En otras palabras, esto no funcionará:
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
Sin embargo, puede engañar al compilador en lo que quiere por medio de los genéricos.
public class YourClass
{
public void Test<T>(T i) where T: I1, I2 { }
}
Ahora funcionará. Todavía no estoy 100% seguro de que no le dará otros problemas, sin embargo, tendría que pensarlo.
Puede usar [el mismo truco que para declarar una variable miembro] (http://stackoverflow.com/a/4940249/429091), aunque este enfoque requiere la implementación de clases para optar por el patrón. – binki