using System; static class Test1 { public interface IOp { T Func(uint v); } public struct Op : IOp, IOp { ushort IOp.Func(uint v) { return (ushort )(v * 2); } uint IOp.Func(uint v) { return v * 4; } } static void Foo(uint v) where T:struct where OP : IOp { OP op = default(OP); System.Console.WriteLine( op.Func(v) ); } static public void Main() { Foo(100); Foo(100); } };