using System; delegate void D<in T> (); interface I<out T> { event D<T> field; } class D : I<string> { public event D<string> field; public static int Main () { D<object> dd = () => {}; D d = new D (); d.field += dd; d.field (); return 0; } }