public static void Main()
IService<Callback, Proxy> test1 = new Service();
IService<Callback, IProxy> test2 = new Service();
IService<ICallback, IProxy> test3 = new Service();
IService<ICallback, Proxy> test4 = new Service();
interface IService<in TCallback, out TProxy> { }
class Callback : ICallback { }
class Service : IService<Callback, Proxy> { }