c# 通过反射获取私有方法

    class Program
    {
        static void Main(string[] args)
        {
            //通过反射来调私有的成员
            Type type = typeof(Person);
            //BindingFlags类型枚举,BindingFlags.NonPublic | BindingFlags.Instance 组合才能获取到private私有方法
            MethodInfo methodInfo = type.GetMethod("SayHello", BindingFlags.NonPublic | BindingFlags.Instance);
            object obj = Activator.CreateInstance(type);  //通过反射类型创建实例对象
            methodInfo.Invoke(obj, null);
        }
    }

    public class Person
    {
        private void SayHello()
        {
            Console.WriteLine("我是私有方法。");
            Console.ReadKey();
        }
    }
时间: 2024-08-29 18:54:32

c# 通过反射获取私有方法的相关文章

Android(java)学习笔记108:通过反射获取私有构造方法并且使用

1 package cn.itcast_02; 2 3 import java.lang.reflect.Constructor; 4 5 /* 6 * 需求:通过反射获取私有构造方法并使用 7 * private Person(String name){} 8 * 9 * Person p = new Person("风清扬"); 10 * System.out.println(p); 11 */ 12 public class ReflectDemo3 { 13 public st

java通过反射获取私有的构造方法,及反射擦除泛型数据类型约束

/* * 反射获取私有的构造方法运行 * 不推荐,破坏了程序的安全性,封装性 * 暴力私有 */ public class ReflectDemo4 { public static void main(String[] args)throws Exception { Class c=Class.forName("demo01.Person"); Constructor con=c.getDeclaredConstructor(int.class,String.class); //Con

获取调用者Class和method、反射获取get方法、获取注解信息

调用者Class 及 method StackTraceElement stacks[] = Thread.currentThread().getStackTrace(); for (StackTraceElement stack : stacks) { String className = stack.getClassName(); if (className.contains("com.upsoft") && className.contains("Con

通过反射访问私有方法

1 package com.dy.xidian; 2 3 import java.lang.reflect.InvocationTargetException; 4 import java.lang.reflect.Method; 5 6 class A { 7 private void a() { 8 System.out.println("This is a function"); 9 } 10 } 11 public class TestReflect { 12 public s

java反射调用私有方法和修改私有属性

//调用私有方法package com.java.test; public class PrivateMethod { private String sayHello(String name) { return "hello "+name; } } 测试: package com.java.test; import java.lang.reflect.Method; public class PrivateMethodTest { public static void main(Str

反射获取一个方法中的参数名(不是类型)

一般来说,通过反射是很难获得参数名的,只能取到参数类型,因为在编译时,参数名有可能是会改变的,需要在编译时加入参数才不会改变. 使用注解是可以实现取类型名(或者叫注解名)的,但是要写注解,并不方便. 观察Spring mvc框架中的数据绑定,发现是可以直接把http请求中对应参数绑定到对应的参数名上的,他是怎么实现的呢? 先参考一下自动绑定的原理:Spring源码研究:数据绑定 在getMethodArgumentValues方法中,MethodParameter[] parameters =

java.lang.reflect.Method.getAnnotation()方法示例【通过反射获取到方法对象再获取方法对象上的注解信息】

转: java.lang.reflect.Method.getAnnotation()方法示例 java.lang.reflect.Method.getAnnotation(Class <T> annotationClass)方法如果存在这样的注释,则返回指定类型的元素的注释,否则为null. 声明 以下是java.lang.reflect.Method.getAnnotation(Class <T> annotationClass)方法的声明. public <T exte

mvc通过反射获取action方法(适用于权限控制)

public static List<string> GetALLPageByReflection() { List<string> actions = new List<string>(); var asm = System.Reflection.Assembly.GetExecutingAssembly(); System.Collections.Generic.List<Type> typeList = new List<Type>();

Java Reflection(七):私有变量和私有方法

转载自并发编程网 – ifeve.com 内容索引访问私有变量访问私有方法 在通常的观点中从对象的外部访问私有变量以及方法是不允许的,但是Java反射机制可以做到这一点.使用这个功能并不困难,在进行单元测试时这个功能非常有效.本节会向你展示如何使用这个功能. 注意:这个功能只有在代码运行在单机Java应用(standalone Java application)中才会有效,就像你做单元测试或者一些常规的应用程序一样.如果你在Java Applet中使用这个功能,那么你就要想办法去应付Securi