using System; using System.Reflection; // Delegate Cache class C { static Func XX () { System.Func t = () => default (T); return t; } } // Delegate Cache class C2 { static Func> XX () { System.Func> t = () => default (C); return t; } } // No delegate cache class N1 { static Func XX () { System.Func t = () => default (T); return t; } } public class Test { public static int Main () { var t = typeof (C<>); if (t.GetFields (BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static).Length != 1) return 1; t = typeof (C2<>); if (t.GetFields (BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static).Length != 1) return 1; t = typeof (N1); if (t.GetFields (BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static).Length != 0) return 1; Console.WriteLine ("OK"); return 0; } }