C#反射的简单示例
2018-06-27 09:52:34来源:未知 阅读 ()
反射(Reflection)可以在运行时获 得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的名称、限定符和参数等反正说白了就是通过反射能够获取一个未知类的类型。下面通过代码来讲解
1:反射的基本用法
public class ReflectionTest { /// <summary> /// 反射名称 /// </summary> public string ReflectionName { get; set; } public string GetName() { return "张三"; } }
Type type = typeof(ReflectionTest); string name = type.Name;//获取当前成员的名称 string fullName = type.FullName;//获取类的全部名称不包括程序集 string nameSpace = type.Namespace;//获取该类的命名空间 var assembly = type.Assembly;//获取该类的程序集名 var module = type.Module;//获取该类型的模块名 var memberInfos = type.GetMembers();//得到所有公共成员
在控制台打印结果如下图:
//获取当前执行代码的程序集 Assembly assem = Assembly.GetExecutingAssembly(); Console.WriteLine(assem.FullName); var types = assem.GetTypes();//程序集下所有的类 Console.WriteLine("程序集包含的类型:"); foreach (var item in types) { Console.WriteLine("类" + item.Name); }
打印结果
2:通过反射建立工厂
public static T Instance<T>(string assembly, string type) { if (string.IsNullOrEmpty(type)) throw new ArgumentException("type:参数不能为空!"); //1、获取有效的程序集 Assembly mAssembly = string.IsNullOrEmpty(assembly) ? Assembly.GetCallingAssembly() : Assembly.Load(assembly); var t = (T) mAssembly.CreateInstance(type); return t; }
- 参数assembly 指的是程序dll的路径如果本地传空
- 参数type 指的是指定类的路径
调用:var assembly = Instance<DogInfo>("", "AenericApp.Entity.DogInfo");即可
当然orm也是运用很多反射大家自己可以学习以上就是一个简单介绍
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:文件读写,改进版
下一篇:NUnit基本使用方法
- 加边的无向图--并查集 2020-04-10
- 排兵布阵 2020-02-21
- 二叉树(四)二叉堆 2020-02-03
- 一款简单的C++猜数字游戏(新手必学) 2019-12-10
- 《大话设计模式》之简单工厂模式 2019-11-17
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash