Ну да, и нет.
Вы можете, как предложил Стив, создать еще один, третий, интерфейс, который наследуется от двух, которые вы хотите, и использовать его для типа параметра.
Однако это также потребует, чтобы используемый класс реализовывал и этот третий интерфейс.
Другими словами, это не сработает:
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
Тем не менее, вы можете обмануть компилятор в то, что вы хотите с помощью обобщений.
public class YourClass
{
public void Test<T>(T i) where T: I1, I2 { }
}
Теперь это будет работать. Я все еще не уверен на 100%, что это не вызовет у вас других проблем, но я должен подумать об этом.