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

    示例源代码:反射示例

  • 相关阅读:
    带你玩转Visual Studio——带你高效开发
    删除ue4中c++类
    ue4 2游戏构架相关
    UE4 代码总结
    unreal4特性介绍
    ue4 1官网编程指南总结
    UE4 中的 C++ 编程介绍
    ue4 代码入门
    Unity 5着色器系统代码介绍(下)
    Unity 5着色器系统代码介绍(上)
  • 原文地址:https://www.cnblogs.com/tqlin/p/1793067.html
Copyright © 2011-2022 走看看