zoukankan      html  css  js  c++  java
  • Reflection with Private Members

    http://www.codingday.com/reflection-with-private-members/

    By using reflection we can call any function including the private and protected ones. This includes private static methods, constructor methods, normal methods. What we need to do is to get the method by the BindingFlags.Nonpublic flag and then we just use it like a reflected type.

    Code
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Reflection;
     
    namespace ReflectPrivateMembers
    {
        
    class Program
        {
            
    static void Main(string[] args)
            {
                ConstructorInfo ci 
    = typeof(Hello).GetConstructor(BindingFlags.NonPublic| BindingFlags.Instance ,null,System.Type.EmptyTypes,null);
                
    object helloObject = ci.Invoke(System.Type.EmptyTypes);
                MethodInfo[] helloObjectMethods 
    = helloObject.GetType().GetMethods(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.DeclaredOnly| BindingFlags.Instance );
     
                
    foreach (MethodInfo mi in helloObjectMethods)
                {
                    mi.Invoke(helloObject, System.Type.EmptyTypes);
                }
                Console.ReadLine();
            }
        }
        
    public class Hello
        {
            
    private Hello()
            {
                Console.WriteLine(
    "Private Constructor");
            }
            
    public void HelloPub()
            {
                Console.WriteLine(
    "Public Hello");
            }
            
    private void HelloPriv()
            {
                Console.WriteLine(
    "Private Hello");
            }
        }
    }
  • 相关阅读:
    剑指offer-用两个栈实现队列
    Java数组判空的正确打开方式
    浏览器输入URL后后的过程
    HTTP状态码
    HTTP和HTTPS
    北京好未来公司linux面试题
    三剑客 -- sed
    三剑客 -- grep
    shell脚本
    自动化 -- expect
  • 原文地址:https://www.cnblogs.com/smwikipedia/p/1562112.html
Copyright © 2011-2022 走看看