zoukankan      html  css  js  c++  java
  • 【学步者日记】C#反射中NonPublic和Instance需要一起使用

    完整链接请看:

    http://note.youdao.com/noteshare?id=f378d9a414e46893b0e300b017ed3655

    ————————————————————————

     
    如果在 BindingFlag 中使用 NonPublic/Public 时必须同时(我在看别人的教程时候并没有强调同时)使用 Static/Instance 否则将会返回null。
     
    参考代码
    ▼代码开始
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
     
    namespace DreamSchool_LRNCS
    {
        class Program
        {
            private void fun()
            {
                Console.Write("ds_fun");
     
            }
     
            static void Main(string[] args)
            {
                AA.C1 newC1Instance = new AA.C1();
                var funM = newC1Instance.GetType().GetMethod("fun", System.Reflection.BindingFlags.NonPublic| System.Reflection.BindingFlags.Instance);
                object[] para = { };
                if(funM==null)
                {
                    Console.Write("error, funM is null");
                }
                else
                funM.Invoke(newC1Instance, para);
                Console.Read();
            }
        }
    }
     
    namespace AA
    {
        public class C1
        {
            private void fun()
            {
                Console.Write("C1 fun");
            }
        }
    }
    namespace BB
    {
        public class C2
        {
            public void fun()
            {
                Console.Write("c2 fun");
            }
        }
    }
    ▲代码结束

  • 相关阅读:
    第五周总结 8.11
    第四周总结 8.2
    第三周总结7.27
    PHP实验四
    PHP实验一
    PHP实验三
    软件工程课程总结
    《梦断代码》阅读笔记03
    找水王
    评价搜狗输入法
  • 原文地址:https://www.cnblogs.com/JackSamuel/p/9672600.html
Copyright © 2011-2022 走看看