zoukankan      html  css  js  c++  java
  • 理解C#反射

    参考文章:http://blog.csdn.net/educast/article/details/2894892

    上面的文章将C#反射要用到的方法都给出了,下面我将写个例子,帮助理解

    【1.使用反射读取程序集】

    namespace Ref
    {
        class Program
        {
            static void Main(string[] args)
            {
                //读取程序集
                Assembly ass = Assembly.Load("Ref");
                //获取Ref程序集中的Program类
                Type t = ass.GetType("Ref.Program");
                //根据获取到的类创建实例
                object o = Activator.CreateInstance(t);
                //获取方法
                MethodInfo mi = t.GetMethod("Show");
                //反射调用自己的方法(需要传递其类,如果是静态方法则不需要传递o,写成null就行)
                mi.Invoke(o, null);
            }
    
            public void Show()
            {
                Console.WriteLine("显示22");
            }
        }
    }

     【2.通过类库DLL文件的反射】

    [链接:使用VS制作Dll文件]http://blog.csdn.net/u010026134/article/details/51598499

    使用VS的功能,添加新建项目---类库,比如写了以下代码

    namespace MyDll
    {
        public class Class1
        {
    
        }
    
        public class SayAndSee
        {
            public string say = "isOk?";
    
            public void MyFun()
            {
                string see = "isee";
                Console.WriteLine("我看见你了");
            }
    
            public int Cau(int num1, int num2)
            {
                return num1 + num2;
            }
        }
    }

    然后点击生成---生成解决方法,这样我们就可以在DEBUG目录下获取到这个类的Dll文件了,获取其DLL文件路径

    接下来就可以去使用了

    namespace RefDLL
    {
        class Program
        {
            static void Main(string[] args)
            {
                //读取DLL文件
                Assembly assembly = Assembly.LoadFrom(@"C:\Users\zts.FORTUNE\Documents\Visual Studio 2015\Projects\Test3\RefDLL\bin\Debug\MyDll.dll");
                //获取MyDll程序集中的SayAndSee类
                Type t = assembly.GetType("MyDll.SayAndSee");
                //根据获取到的类创建实例
                object o = Activator.CreateInstance(t);
                //获取方法
                MethodInfo mi = t.GetMethod("MyFun");
                //反射调用自己的方法(需要传递其类,如果是静态方法则不需要传递o,写成null就行)
                mi.Invoke(o, null);
            }
        }
    }
  • 相关阅读:
    59
    58
    57
    56
    55
    54
    53
    转 Using $.ajaxPrefilter() To Configure AJAX Requests In jQuery 1.5
    jquery用正则表达式验证密码强度
    什么是高内聚、低耦合?(转载)
  • 原文地址:https://www.cnblogs.com/sanyejun/p/6782766.html
Copyright © 2011-2022 走看看