首页 > 代码库 > 反射示例1-----执行反射dll的方法和获取属性的值

反射示例1-----执行反射dll的方法和获取属性的值

项目结构:

wKioL1RY5vzQLpNHAACCAAp6Bew937.jpg

将Document类库生成的DLL文件放在ConsoleApplication2\ConsoleApplication2\bin\Debug文件夹下

-------------------------------------------------------------Document.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Document
{
    public class Document
    {
        public string Name = "李四";
        public string GetName(string name)
        {
            return name;
        }
    }
}

 -------------------------------------------------------------Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Reflection;
using System.IO;
namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            //获取程序集
            Assembly asb = Assembly.LoadFrom(Directory.GetCurrentDirectory() + "/Document.dll");
            //获取程序集下面的Document类
            Type document = asb.GetType("Document.Document");
            //实例化Document类对象(有参数的话需要传递object参数)
            object docObj = Activator.CreateInstance(document);
            //获取Document类中的方法
            MethodInfo mi = document.GetMethod("GetName");
            //参数
            object[] parameter = new object[] { "张三" };
            Console.WriteLine(mi.Invoke(docObj, parameter).ToString());//输出方法的返回值:张三
            //获取Document类中的属性
            FieldInfo pi = document.GetField("Name");
            Console.WriteLine(pi.GetValue(docObj));//输出方法的属性:李四
            Console.ReadKey();
        }
    }
}

本文出自 “程序猿的家--Hunter” 博客,请务必保留此出处http://962410314.blog.51cto.com/7563109/1571868

反射示例1-----执行反射dll的方法和获取属性的值