using System; interface InterfaceContravariat<in T> { T Prop { set; } T this[int arg] { set; } } interface InterfaceCovariant<out T> { T Prop { get; } T this[int arg] { get; } } class A : InterfaceContravariat<int>, InterfaceCovariant<long> { public static int Main () { return 0; } int InterfaceContravariat<int>.Prop { set { throw new NotImplementedException (); } } int InterfaceContravariat<int>.this[int arg] { set { throw new NotImplementedException (); } } long InterfaceCovariant<long>.Prop { get { throw new NotImplementedException (); } } long InterfaceCovariant<long>.this[int arg] { get { throw new NotImplementedException (); } } }