BindingFlags.NonPublic;// FieldsFieldInfo fi_protected = t.GetField("ProtectedField",bf);FieldInfo fi_private = t.GetField("PrivateField",bf);Console.WriteLine(fi_protected.GetValue(mc));Console.WriteLine(fi_private.GetValue(mc));fi_private.SetValue(mc,"New Private Field");Console.WriteLine(fi_private.GetValue(mc));Console.WriteLine();// PropertiesPropertyInfo pi_protected = t.GetProperty("ProtectedProperty", bf);PropertyInfo pi_private = t.GetProperty("PrivateProperty", bf);Console.WriteLine(pi_protected.GetValue(mc,null));Console.WriteLine(pi_private.GetValue(mc,null));pi_private.SetValue(mc,"New Private Property",null);Console.WriteLine(pi_private.GetValue(mc,null));Console.WriteLine();// MethodsMethodInfo mi_protected = t.GetMethod("ProtectedMethod", bf);MethodInfo mi_private = t.GetMethod("PrivateMethod", bf);mi_protected.Invoke(mc,null);mi_private.Invoke(mc,null);Console.ReadLine();
输出:
关键词:.NET程序内,访问私有或者保护成员的技巧