zoukankan      html  css  js  c++  java
  • C# 通过反射类动态调用DLL方法

    个人觉得"反射"就是能按照规定(微软.net)动态访问特定程序集中对象的工具.

    网上找的代码:例子:

    //使用反射方:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Reflection;

    namespace ConsoleApplication1
    {
        
    class Program
        {
            
    static void Main(string[] args)
            {
                
    //声明一个反射类对象
                Assembly a;

                
    //让这个对象加载某个外部dll程序集信息.
                a = Assembly.LoadFile(@"C:\Users\正月龙\Desktop\Person\Person\bin\Debug\Person.dll");
                
    //反射出该dll程序集的名称信息.
                Console.WriteLine(a.GetName());
                Console.ReadKey();
                
                
    //定义一个"类型信息"的对象.
                Type t = a.GetType("Person.Person"falsetrue);
                
                
    //定义一个成员信息类对象数组,并从程序集中获取.
                MemberInfo[] info = t.GetMembers();
                
                
    //逐个返回成员的名字.
                foreach (MemberInfo inf in info)
                {
                    Console.WriteLine(inf.Name);
                }
                Console.ReadKey();

                
    //定义一个成员方法对象,这里是指定方法名称来获取的.
                MethodInfo method = t.GetMethod("show");
                
                
    //定义一个查询构造函数的对象,获取时需给定签名.
                ConstructorInfo coninfo = t.GetConstructor(new Type[] { typeof(int), typeof(string) });
                
                
    //这里准备两个参数,封装为一个具有两个对象的数组.
                object[] arg = new object[2] { 10"dog" };
                
                
    //调用构造函数并赋值给一个对象.
                object o = coninfo.Invoke(arg);
                
                
    //调用对象的方法
                method.Invoke(o, null);
                
                
    //这是第二种调用对象的方法.都可以.
                method.Invoke(o, BindingFlags.Public | BindingFlags.Instance , Type.DefaultBinder, nullnull);

                Console.ReadKey();
            }
        }
    }

    //被查询或被调用方

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace Person
    {
        
    public class Person
        {
            
    private int int_a;
            
    private string str_a;
            
            
    public Person()
            { 
            
            }

            
    public Person(int a,string b)
            {
                
    this.int_a = a;
                
    this.str_a = b;
            }

            
    public void show()
            {
                Console.WriteLine(int_a.ToString()
    +":"+str_a);
                Console.ReadKey();
            }
        }
    }
  • 相关阅读:
    [转]zxing二维码的生成和解码 j2se
    [转]Android的网络与通信
    (转)Firefox:浏览器内置数据库之路
    dom Framework oop模块
    我的框架 别名机制
    获取屏幕的PDI值
    mass Framework lang模块
    王云飞 《绿色生活》(附译文)
    dom Framework query模块
    dom Framework核心模块发布!(更新)
  • 原文地址:https://www.cnblogs.com/webcyz/p/1932410.html
Copyright © 2011-2022 走看看