using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;// <------------- 添加引用
using System.Text;
using System.Threading.Tasks; namespace 反射Reflection
{
class Program
{
static void Main(string[] args)
{ //加载DLL,要放在编译目录下
Assembly ass = Assembly.Load("TestClassLibrary"); //----------------------- 获取DLL模块 --------------------- //获取指定的DLL模块
Module dll = ass.GetModule("TestClassLibrary.dll");
//获取全部DLL模块,dlls[0] = TestClassLibrary.dll
Module[] dlls = ass.GetModules(); //---------------------- 获取模块中的类 ---------------------- //获取指定的类
Type tagT = ass.GetType("TestClassLibrary.Class1");
string dd = tagT.Name; //获取所有类
Type[] tpyes = ass.GetTypes(); //---------------------- 创建实例 ---------------------- //用这个类创建实例
object aTagObject = Activator.CreateInstance(tagT); //一般是通过接口创建一个返射模块中的类对象
//这需要模块和主程序都引用接口 //---------------------- 获取类的方法 ---------------------- //获取方法的信息
MethodInfo[] methods = tagT.GetMethods();
MethodInfo method_getSize = tagT.GetMethod("getSize"); //调用无参无返的方法(输入一个此类的实例,无参则给空,或 new object[] { })
method_getSize.Invoke(aTagObject, new object[] { }); //调用无参有返的方法
//调用方法的一些标志位,这里的含义是Public并且是实例方法,这也是默认的值
BindingFlags flag = BindingFlags.Public | BindingFlags.Instance;
//GetValue方法的参数放在{}中
object[] parameters = new object[] { };
//调用方法,用一个object接收返回值
object returnValue = method_getSize.Invoke(aTagObject, flag, Type.DefaultBinder, parameters, null); //---------------------- 获取类的属性 ----------------------
MemberInfo[] mem = tagT.GetMembers();
MemberInfo[] libName = tagT.GetMember("libName"); Console.Write("");
}
}
}

  

反射Reflection的更多相关文章

  1. [.net 面向对象程序设计进阶] (21) 反射(Reflection)(下)设计模式中利用反射解耦

    [.net 面向对象程序设计进阶] (21) 反射(Reflection)(下)设计模式中利用反射解耦 本节导读:上篇文章简单介绍了.NET面向对象中一个重要的技术反射的基本应用,它可以让我们动态的调 ...

  2. [.net 面向对象程序设计进阶] (20) 反射(Reflection)(上)利用反射技术实现动态编程

    [.net 面向对象程序设计进阶] (20) 反射(Reflection)(上)利用反射技术实现动态编程 本节导读:本节主要介绍什么是.NET反射特性,.NET反射能为我们做些什么,最后介绍几种常用的 ...

  3. [整理]C#反射(Reflection)详解

    本人理解: 装配件:Assembly(程序集) 晚绑定:后期绑定 MSDN:反射(C# 编程指南) -----------------原文如下-------- 1. 什么是反射2. 命名空间与装配件的 ...

  4. CSharpGL(43)环境映射(Environment Mapping)-天空盒(Skybox)反射(Reflection)和折射(Refraction)

    CSharpGL(43)环境映射(Environment Mapping)-天空盒(Skybox)反射(Reflection)和折射(Refraction) 开始 如图所示,本文围绕GLSL里的sam ...

  5. 代理(Proxy)和反射(Reflection)

    前面的话 ES5和ES6致力于为开发者提供JS已有却不可调用的功能.例如在ES5出现以前,JS环境中的对象包含许多不可枚举和不可写的属性,但开发者不能定义自己的不可枚举或不可写属性,于是ES5引入了O ...

  6. Golang 反射reflection

    反射reflection 反射可大大提高程序的灵活性,使得interface{}有更大的发挥余地 反射使用TypeOf和ValueOf函数从接口中获取目标对象信息 反射会将匿名字段作为独立字段(匿名字 ...

  7. C# 反射(Reflection)技术

    本文参考自C#反射(Reflection)详解,纯属学习笔记,加深记忆 在介绍反射前,先介绍一个重要的知识点         .Net应用程序是由程序集(Assembly).模块(Module).类型 ...

  8. C#反射(Reflection)详解

    1. 什么是反射2. 命名空间与装配件的关系3. 运行期得到类型信息有什么用4. 如何使用反射获取类型5. 如何根据类型来动态创建对象6. 如何获取方法以及动态调用方法7. 动态创建委托 1.什么是反 ...

  9. C# 反射Reflection——反射反射程序员的快乐

    一.什么是反射 反射Reflection:System.Reflection,是.Net Framework提供的一个帮助类库,可以读取并使用metadata. 反射是无处不在的,MVC-Asp.Ne ...

  10. Laravel学习笔记之PHP反射(Reflection) (上)

    Laravel学习笔记之PHP反射(Reflection) (上) laravel php reflect 2.1k 次阅读  ·  读完需要 80 分钟 3 说明:Laravel中经常使用PHP的反 ...

随机推荐

  1. thinkphp 常量参考

    预定义常量 预定义常量是指系统内置定义好的常量,不会随着环境的变化而变化,包括: URL_COMMON 普通模式 URL (0) URL_PATHINFO PATHINFO URL (1) URL_R ...

  2. Hbase表类型的设计

    HBase表类型的设计 1.短宽 这种设计一般适用于: * 有大量的列 * 有很少的行 2.高瘦 这种设计一般适用于: * 有很少的列 * 有大量的行 3.短宽-高瘦的对比 短宽 * 使用列名进行查询 ...

  3. (转)openfire插件开发(三)通过http方式向openfire客户端发信息

    转:http://blog.csdn.net/hzaccp3/article/details/19964655 需求:  通过http方式,向openfire客户端发信息(非XMPP协议)openfi ...

  4. python使用threading获取线程函数返回值的实现方法

    python使用threading获取线程函数返回值的实现方法 这篇文章主要介绍了python使用threading获取线程函数返回值的实现方法,需要的朋友可以参考下 threading用于提供线程相 ...

  5. 【C++】清空一个C++栈的快速方法

    来源:https://stackoverflow.com/questions/40201711/how-can-i-clear-a-stack-in-c-efficiently/40201744 传统 ...

  6. 拾遗:Qemu/KVM

    WinXP: #!/bin/bash name=winxp qemu-system-x86_64 \ -enable-kvm \ -cpu host -smp ,sockets=,cores=,thr ...

  7. AWT Button类

    按钮是一个控制组件,按下时有一个标签,并生成一个事件.当按钮被按下和释放,AWT发送ActionEvent的一个实例的按钮,通过调用按钮上的processEvent.按钮的processEvent方法 ...

  8. 反射与类加载之反射基本概念与Class(一)

    更多Android高级架构进阶视频学习请点击:https://space.bilibili.com/474380680本篇文章将从以下几个内容来阐述反射与类加载: [三种获取Class对象的方式] [ ...

  9. 2019年Pandas官方用户调研

    import pandas as pd import seaborn as sns import matplotlib.pyplot as plt %matplotlib inline plt.rcP ...

  10. MS Sql添加描述信息 及其他信息

    --查询某个表的描述 SELECT * FROM fn_listextendedproperty (NULL, 'user', 'dbo', 'table', '(表名)',NULL, NULL) - ...