zoukankan      html  css  js  c++  java
  • 反射

       public class Love
        
    {
            
    public int field1;
            
    private string _name;

            
    public Love()
            
    {

            }


            
    public string Name
            
    {
                
    get
                
    {
                    
    return _name;
                }


                
    set
                
    {
                    _name 
    = value;
                }

            }



            
    public int GetInt(int a)
            
    {
                
    return a;
            }




            
    public void Display(string str)
            
    {
                System.Windows.Forms.MessageBox.Show(str);
            }


        }



    测试代码:

    private void test()
            
    {
                Love love 
    = new Love();
                Type type 
    = love.GetType();

                type.InvokeMember(
    "Display", BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.Instance, null, love, new object[] "aldfjdlf" });

                
    //调用有返回值的方法
                int i = (int)type.InvokeMember("GetInt", BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.Instance, null, love, new object[] 1 });
                MessageBox.Show(i.ToString());

                
    //设置属性值
                type.InvokeMember("Name", BindingFlags.SetProperty, null, love, new string[] "abc" });

                
    //获取属性值
                string str = (string)type.InvokeMember("Name", BindingFlags.GetProperty, null, love, null);
                MessageBox.Show(str);


                
    //设置字段值
                type.InvokeMember("field1", BindingFlags.SetField, null, love, new object[] 444 });

                
    //获取公有字段值
                int f = (int)type.InvokeMember("field1", BindingFlags.GetField, null, love, null);
                MessageBox.Show(f.ToString());

                
    //获取私有字段值
                string name = (string)type.InvokeMember("_name", BindingFlags.GetField | BindingFlags.NonPublic |BindingFlags.Instance, null, love, null);
                MessageBox.Show(name);


            }
  • 相关阅读:
    springboot整合mybatis
    springboot配置mvc拦截器
    ORA-65048:在可插入数据库PDBORCL中处理当前DDL语句时出错 ORA-00959:表空间‘MMMM’不存在
    SI Unit 国际标准单位
    java学习的第二阶段总结
    java学习的第一阶段总结
    vmware学习笔记
    java当中的语法糖
    jvm系统学习笔记
    java中Direct Memory堆外内存
  • 原文地址:https://www.cnblogs.com/gxh973121/p/454784.html
Copyright © 2011-2022 走看看