• c# 反射私有类和私有方法


     namespace ClassLibrary1
    {
       class InnerClass//私类
        {
            public string Test(string s)
            {
                return "" + DateTime.Now + "   " + s;
            }
    
            public void Test2(string s)
            {
                Debug.Print(s);
            }
            private string Test3(string s)//私方法
            {
                return "private " + DateTime.Now + "   " + s ;
            }
        }
    }
    
    
    反射:
    
            [TestMethod]
            public void Test2()
            {
                var assembly = Assembly.Load("ClassLibrary1");
                var obj = assembly.CreateInstance("ClassLibrary1.InnerClass");
                var m=obj.GetType().InvokeMember("Test",BindingFlags.InvokeMethod ,null,obj, new object [] { "123"});
                Debug.Print(""+m);
                //BindingFlags类型枚举,BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.InvokeMethod 组合才能获取到private私有方法
                var k = obj.GetType().InvokeMember("Test3", BindingFlags.NonPublic | BindingFlags.Instance |BindingFlags.InvokeMethod, null, obj, new object[] { "123" });
                Debug.Print("" + k);
            }
    

      

    如果类只有一个带参数的构造函数,如:

    public InnerClass(string s) {

    Text = s;
    }

    那反射时候这样:

    var obj = assembly.CreateInstance("ClassLibrary1.InnerClass",true,BindingFlags.CreateInstance,null,new string[] {"123" }, new System.Globalization.CultureInfo("en-US"), new object[] { });

    fffffffffffffffff
    test red font.
  • 相关阅读:
    ubuntu18.04阿里源
    C# 去开头字符串
    思维导图 电商运营思路
    思维导图 淘宝淘宝流量来源
    学习 名词
    Java面试题之“==”和“equals()”方法的区别?
    修改本地MySQL的root身份密码
    添加并启动MySQL服务
    在centos7上进行hadoop-3.1.2的伪分布搭建
    TreeMap树映射取出对象的方式
  • 原文地址:https://www.cnblogs.com/wgscd/p/15266425.html
Copyright © 2020-2023  润新知