C# 反射的简单用法
- 新建两个项目:类库(Model)和控制台应用程序(ReflectTest)。
- 在【Model】中添加一个类【User】:
namespace Model
{
public class User
{
public string Show()
{
return "Test Reflect.";
}
}
} - 编译生成【Model】,并把生成的dll拷贝到【ReflectTest】项目下的【\bin\Debug\】文件夹里面。
- 实现反射:
using System;
using System.Reflection; namespace ReflectTest
{
class Program
{
static void Main(string[] args)
{
Assembly assembly = Assembly.Load("Model"); // 1. 动态加载dll
Type userType = assembly.GetType("Model.User"); // 2. 找到具体类型
object instance = Activator.CreateInstance(userType); // 3. 给类型创建一个对象 // 解析dll
{
// 获取程序集中的所有类型
foreach (Type type in assembly.GetTypes())
{
Console.WriteLine(type.Name);
} // 获取类型中所有方法
foreach (MethodInfo method in userType.GetMethods())
{
Console.WriteLine(method.Name);
}
} MethodInfo showMethod = userType.GetMethod("Show"); // 4. 获取指定方法
var result = showMethod.Invoke(instance, null); // 5. 方法调用
Console.WriteLine(result); Console.ReadLine();
}
}
}
C# 反射的简单用法的更多相关文章
- 【C#学习笔记】反射的简单用法
常见的使用反射的场景: 程序在运行时动态地访问类的成员,如获得类的变量.方法. 例如:用反射给本类的变量赋值. public class Student{ public string studentN ...
- 【.Net 学习系列】-- 反射的简单用法
新建两个项目:类库(Model)和控制台应用程序(ReflectTest). 在[Model]中添加一个类[User]: namespace Model { public class User { p ...
- Java反射的简单入门
1.Class的简单介绍 Class类的类表示正在运行的Java应用程序中的类和接口. 枚举是一种类,一个注解是一种接口, 每个数组也属于一个反映为类对象的类,该对象由具有相同元素类型和维数的所有数组 ...
- C#反射的简单示例
反射(Reflection)可以在运行时获 得.NET中每一个类型(包括类.结构.委托.接口和枚举等)的成员,包括方法.属性.事件,以及构造函数等.还可以获得每个成员的名称.限定符和参数等反正说白了就 ...
- CATransition(os开发之画面切换) 的简单用法
CATransition 的简单用法 //引进CATransition 时要添加包“QuartzCore.framework”,然后引进“#import <QuartzCore/QuartzCo ...
- jquery.validate.js 表单验证简单用法
引入jquery.validate.js插件以及Jquery,在最后加上这个插件的方法名来引用.$('form').validate(); <!DOCTYPE html PUBLIC " ...
- NSCharacterSet 简单用法
NSCharacterSet 简单用法 NSCharacterSet其实是许多字符或者数字或者符号的组合,在网络处理的时候会用到 NSMutableCharacterSet *base = [NSMu ...
- 通过java反射实现简单的关于MongoDB的对象关系映射(ORM).
通过阅读MongoDB 3.2.1的官方文档中关于java 编程发现最新的文档并没有实现对对象到Document的映射,所以自己有了利用反射实现简单的关系映射. 1.定义抽象类:AbstractMo ...
- [转]Valgrind简单用法
[转]Valgrind简单用法 http://www.cnblogs.com/sunyubo/archive/2010/05/05/2282170.html Valgrind的主要作者Julian S ...
随机推荐
- Linux下搭建BT服务器
P2P(Peer to Peer 即对等网络)就是在这种背景下提出的一种网络技术,P2P可以简单地定义为通过直接交换信息,共享计算机资源和服务,对等计算机兼有客户机和服务器的功能.在这种网络中所有的节 ...
- ArchLinux安装开源VMware Tools
首先按照传统的Linux下安装VMware Tools的方法[1]]出现了很多的错误,安装过程完全没有办法进行下去.我在ArchLinux Wiki中看到这样一句说:VMware Tools for ...
- 理解SVG坐标系统和变换: 建立新视窗
在SVG绘制的任何一个时刻,你可以通过嵌套<svg>或者使用例如<symbol>的元素来建立新的viewport和用户坐标系.在这篇文章中,我们将看一下我们如何这样做,以及这样 ...
- Android 系统日期时间的获取
import java.text.SimpleDateFormat; SimpleDateFormat formatter = new SimpleDateFormat ("yyyy年MM月 ...
- C# 线程更新UI
最方便的用法: private void ViewMsg(string msg) { /* control.Invoke(new SetControlTextDelegate((ct, ...
- 多控制器之UIWindow
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- linux中cron用法
http://blog.chinaunix.net/uid-677314-id-83387.html
- 删除共享内存后key为0x00000000的问题
一开始是 ------ Shared Memory Segments -------- key shmid owner perms bytes nattch status root dest gyf ...
- Storm系列(四)Topology提交校验过程
功能:提交一个新的Topology,并为Topology创建storm-id(topology-id),校验其结构,设置必要的元数据,最后为Topology分配任务. 实现源码: 1 ); Conf ...
- HDU-4115 Eliminate the Conflict 2sat
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4115 题意:Alice和Bob玩猜拳游戏,Alice知道Bob每次会出什么,为了游戏公平,Bob对Al ...