using System; using System.Reflection; // // Test the setting for the default public constructor // abstract class Abstract { } // // Test the setting for the default public consturctor // class Plain { } class Test { static protected internal void MyProtectedInternal () { } static internal void MyInternal() { } static public void MyPublic () { } static void MyPrivate () {} public static int Main () { Type myself = typeof (Test); BindingFlags bf = BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public; MethodAttributes mpia; MethodInfo mpi; // // protected internal // mpi = myself.GetMethod ("MyProtectedInternal", bf); mpia = mpi.Attributes & MethodAttributes.MemberAccessMask; if (mpia != MethodAttributes.FamORAssem) return 1; // // internal // mpi = myself.GetMethod ("MyInternal", bf); mpia = mpi.Attributes & MethodAttributes.MemberAccessMask; if (mpia != MethodAttributes.Assembly) return 2; // // public // mpi = myself.GetMethod ("MyPublic", bf); mpia = mpi.Attributes & MethodAttributes.MemberAccessMask; if (mpia != MethodAttributes.Public) return 3; // // private // mpi = myself.GetMethod ("MyPrivate", bf); mpia = mpi.Attributes & MethodAttributes.MemberAccessMask; if (mpia != MethodAttributes.Private) return 4; // // Test 17.10.4 accessibility (default constructor permissions) // ConstructorInfo ci = typeof (Abstract).GetConstructor (BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, null, new Type [0], new ParameterModifier [0]); if (!ci.IsFamily) return 5; ci = typeof (Plain).GetConstructor (BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, null, new Type [0], new ParameterModifier [0]); if (!ci.IsPublic) return 6; Console.WriteLine ("All tests pass"); return 0; } }