using System; public class Test { public static void Main() { var sta = new SomeType(); sta.Do(new A()); } } public class SomeType where T : Z { public void Do(T t) { t.Foo(); t.Bar(); } } public interface X { void Foo(); } public interface Y { void Bar(); } public interface Z : X, Y { } public class A : Z { public void Foo() {} public void Bar() {} } public class B : Z { public void Foo() {} public void Bar() {} }