zoukankan      html  css  js  c++  java
  • 简单反射实例

    今天中午吃饭,突然有同事谈到不知道程序集名是否也可以调用DLL的公开方法。当时哑了,好久没弄过反射,印象模糊了。回来试了一下,其实只要知道DLL的命名空间和要调用的方法的类名就可以调用该方法了(注:非同一命名空间下,该DLL的类和方法必须是公开的)。示例代码如下:

    创建一个类库,名称为DemoLB,创建一个类Class1,写个公开方法Print(),该方法很简单,就是定义一个整数,然后输出它的类型。

    代码
    namespace DemoLB
    {
        
    public class Class1
        {
            
    public void Print()
            {
                
    int i = 42;
                System.Type type 
    = i.GetType();
                Console.WriteLine(type);
            }
        }
    }

    将上面代码编译生成DemoLB.dll

    创建CSharpReflection控制台项目,将DemoLB.dll拷贝到CSharpReflection项目的Bin目录,示例代码如下:

    代码
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Reflection; //引入反射命名空间

    namespace CSharpReflection
    {
        
    class Program
        {
            
    static void Main(string[] args)
            {
                Assembly assembly 
    = Assembly.LoadFrom("DemoLB.dll");  //动态创建程序集

                
    object obj = Activator.CreateInstance(assembly.GetType("DemoLB.Class1"));  //动态创建对象
                DemoLB.Class1 demo = obj as DemoLB.Class1;  //转换成Class1类
                Console.WriteLine(assembly.GetName());  //输出程序集名称
                demo.Print();   //调用DemoLB.dll的Print方法
                
                Console.Read();
            }
        }
    }

    参考资料:http://msdn.microsoft.com/zh-cn/library/ms173183(VS.80).aspx

    示例源代码:反射示例

  • 相关阅读:
    如何实现抢红包,100元6个用户抢,每个人抢的红包金额至少为10?
    秒杀项目中核心功能的实现
    如何判断一个单链表有环?
    Redis入门
    拼车
    微服务架构SpringCloud的理解
    Linux:移动当前目录的前N个文件到目标文件夹下
    Linux统计文件目录下文件的数目命令
    Python-目标检测-将xml文件转换成.txt文件
    Linux的命令合集
  • 原文地址:https://www.cnblogs.com/tqlin/p/1793067.html
Copyright © 2011-2022 走看看