class Ref {} class Def : Ref {} interface IFooRef { Ref Bar { get; } } interface IFooDef : IFooRef { new Def Bar { get; set; } } class FooProcessor where T : IFooDef { public void Attach (T t, Def def) { t.Bar = def; } } class Program { public static void Main () { } }