using System; namespace TestAttributesCollecting { class A : Attribute { } public partial class X { [A] partial void Foo<[A] T>(/*[A]*/ int p); } public partial class X { partial void Foo (int p) { int i; } } public partial class Y { partial void Foo () { int i; } } public partial class Y { [CLSCompliant (true)] partial void Foo (); } class Program { public static int Main () { var m = typeof (X).GetMethod ("Foo", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); var x = m.GetCustomAttributes (true); Console.WriteLine (x.Length); if (x.Length != 1) return 1; var ga = m.GetGenericArguments (); x = ga [0].GetCustomAttributes (false); if (x.Length != 1) return 2; x = typeof (Y).GetMethod ("Foo", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).GetCustomAttributes (true); Console.WriteLine (x.Length); if (x.Length != 1) return 3; return 0; } } }