.Net实战之反射相关类之间的人体经络关系
--1.类的部分组成成员
--2.巧记成员之间的关系
[MyTable("T_UserInfo")]
public class UserInfo : Person, UserService
{ private int _age2;
private int _age;
[DisplayName("年龄")]
public int Age
{
get
{
return _age;
}
set
{
_age = value;
}
}
[DisplayName("姓名")]
public string Name { get; set; }
public void ShowUserInfo()
{
Console.WriteLine(string.Format("name:{0},age:{1}", Name, _age));
} protected void ShowName()
{
Console.WriteLine("showName:" + Name);
}
}
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)]
public class MyTableAttribute : Attribute
{
private string _tableName;
public MyTableAttribute(string name)
{
_tableName = name;
}
public string Name { get { return _tableName; } }
}
--3.程序集
// 加载程序集(大脑)
//获取当前运行目录下的指定程序集名称
Assembly ass = Assembly.Load("ReflectionDemo");
//Assembly.LoadFile(),Assembly.LoadFrom()加载指定文件的程序集
--4.类型
// 加载中枢神经的 所有经络 //获取该程序集下的所有类型
Type[] types = ass.GetTypes(); //根据类的全名称(命门空间.类名)获取类的信息
Type type1 = ass.GetType("ReflectionDemo.person"); //忽略大小写或找不到该类型抛出异常
//Type type2 = ass.GetType("ReflectionDemo.person2", throwOnError: true, ignoreCase: true); //获取程序集中公共类型
Type[] publicTypes = ass.GetExportedTypes(); //获取类的类型
Type classUserType = typeof(UserInfo); //获取实例的类型
UserInfo ui = new UserInfo();
Type instanceType = ui.GetType(); //获取类型的名称
Console.WriteLine(string.Format("typeFullName:{0},typeName:{1}", instanceType.FullName, instanceType.Name)); //是否继承自某个类
Console.WriteLine("是否继承自某个类-----" + typeof(UserInfo).IsSubclassOf(typeof(Person))); //是否实现了某个接口(接口的实现类型 是否是 指定的类型)
Console.WriteLine("是否实现了某个接口-----" + typeof(UserService).IsAssignableFrom(typeof(UserInfo))); //是否是public的类型
Console.WriteLine("是否是public的类型-----" + classUserType.IsPublic);
--5.字段、属性、方法、特性
//获取字段 BindingFlags位标记 获取字段不同的方式
//t.GetField();t.GetFields()
FieldInfo fiAge = t.GetField("_age",
BindingFlags.Public |
BindingFlags.NonPublic |
BindingFlags.Static |
BindingFlags.Instance |
BindingFlags.DeclaredOnly);
//获取属性 类似Field
t.GetProperties();
PropertyInfo pi = t.GetProperty("");
//pi.CanRead;//能读
//pi.CanWrite;//能写
//获取方法
MethodInfo[] methods = t.GetMethods();
MethodInfo method = t.GetMethod("ShowUserInfo");
//获取特性
MyTableAttribute tabAttr = t.GetCustomAttribute(typeof(MyTableAttribute)) as MyTableAttribute;
if (tabAttr != null)
{
Console.WriteLine("select * from " + tabAttr.Name);
}
下一篇,反射的数据操作
.Net实战之反射相关类之间的人体经络关系的更多相关文章
- ZT 类与类之间的四种关系
csdn上一个好贴子:http://bbs.csdn.net/topics/390646332 类与类之间的四种关系1.依赖(Dependency) 类A在类B中作为一个成员函数的参数或者是返回值 ...
- 图解UML类与类之间的六中关系
大话设计模式上的一个图,我用EA画出来的: UML中的6大关系相关英文及音标: 依赖关系 dependency [di'pendənsi] 关联关系 association [ə,səuʃi' ...
- C# UML类图及类之间的几种关系
今天晚上看了大话设计模式中的UML类图这一节感觉受益匪浅,好多年不能理解的类之间的关系理解了. 一.UML类图的表示方法 1.类的表示方法 A类用一个矩形框分三层表示,第一层是类名,斜体类名表示抽象类 ...
- 【转】UML中类与类之间的5种关系表示
一.继承关系 继承指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力.在Java中继承关系通过关键字extends明确标识,在设计时一 ...
- 类与类之间的两种关系------新标准c++程序设计
在c++中,类和类之间有两种基本关系:复合关系和继承关系. 复合关系也称为“has a”关系或“有”的关系,表现为封闭类,即一个类以另一个类的对象作为成员变量. 继承关系也称为“is a”关系或“是” ...
- Java类与类之间的6种关系及uml表示
一.继承关系 继承指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力.在Java中继承关系通过关键字extends明确标识,在设计时一般没有争议 ...
- 初识UML类图--类之间关系
前言 最近有打算学习一下设计模式,所以就去看了园子里面左潇龙大哥的设计模式文章,看完之后只有一个感觉,我啥时候也能写出来这么牛逼的文章啊,但是我这语文老师死的早的人还是算了,但是设计模式还是要学的,这 ...
- UML类图画法及其之间的几种关系(转)
UML类图画法及其之间的几种关系 最近做重构项目,需要画一下类图,发现类图的画法及其之间的几种关系已经淡忘了很多,所以整理总结一下,有问题的地方大家可以一起讨论下. 文章目录如下: 类图画法 类之间的 ...
- Java-类与类之间的关系
类与类之间的几种关系 一.继承关系 继承指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力.在Java中继承关系通过关键字exte ...
随机推荐
- jackson的应用
直接上代码 package com.demo.jackson.utils; import com.fasterxml.jackson.core.JsonProcessingException; imp ...
- Port forwarding with xinetd Ask
https://stackoverflow.com/questions/21716673/port-forwarding-with-xinetd --------------------------- ...
- vi,vim的基本使用方法
"i”插入 "/" 查找 "wq"保存退出 "q!"不保存退出
- andorid自己定义ViewPager之——子ViewPager滑到边缘后直接滑动父ViewPager
近期的项目中,有一个需求要用ViewPager中嵌套ViewPager去实现整个效果.没做不论什么处理做出来后,仅仅能不停的滑动子ViewPager,父ViewPager就无法滑动了,这样肯定是不满足 ...
- vux picker
1.通过实验证明: PopupPicker = TransferDom + Popup + PopupHeader + Picker 2.代码 Picker.vue <!-- Picker 组件 ...
- C#高级编程五十二天----有序列表
有序列表 假设须要基于对全部集合排序,就能够使用SortedList<TKey,TValue>类.这个类依照键给元素排序.这个集合中的值和键都能够使用随意类型. 以下的样例创建了一个有序列 ...
- 通过构建Cocoapods私有库进行组件化开发探索
专题一 一.创建私有索引库 选Github或者码云都可以,本例以Github为例.创建私有索引库用来作为自己组件库的索引: 二.本地添加私有索引库 添加:pod repo add 索引库名称 索引库地 ...
- react新特性 react hooks
本文介绍的是react新特性react hooks,本文面向的是有一定react开发经验的小伙伴,如果你对react还不是很熟悉的话我建议你先学习react并多多联系. 首先我们都知道react有3种 ...
- Echarts 如何使用 bmap 的 API
使用 Echarts 在绘制 Binning on map 的图形时(其实也就是 在地图上绘制热力色块图) 解决因为数据量过大,希望在拖拽加载或者缩放加载的时候,根据可视区域的经纬度范围,来请求相应的 ...
- MySQL-查询数据(SELECT)
MySQL SELECT语句 SELECT语句用于从表或视图中获取数据 Select语句组成 Select 之后是逗号分隔列或星号(*)的列表,表示要返回所有列. From 指定要查询数据的表或视图. ...