.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 ...
随机推荐
- JSP的表单处理
以下内容引用自http://wiki.jikexueyuan.com/project/jsp/form-processing.html: 当需要从浏览器向Web服务器传递一些信息并最终将信息返回到后端 ...
- Android 原生开发、H5、React-Native使用利弊和场景技术分享
http://m.blog.csdn.net/article/details?id=51778086 发表于2016/6/28 18:52:46 1176人阅读 最近工作中接触到React ...
- html自动换行
对于div,p等块级元素 正常文字的换行(亚洲文字和非亚洲文字)元素拥有默认的white-space:normal,当定义的宽度之后自动换行html css 1.(IE浏览器)连续的英文字符和阿拉伯数 ...
- spring mvc随便接收list<objeect>参数
在后台设定一个类,PersonList类: public class PersonList {private List<User> user; public List<User> ...
- mysql建表语句key的含义
CREATE TABLE `admin_role` ( `adminSet_id` varchar(32) NOT NULL, `roleSet_id` varchar(32) NOT NULL, ...
- Django学习系列之模板系统
一.模板标签 if/else {% if %}标签检查一个变量的值是否为真或者等于另外一个值,如果为真,系统会执行{% if %}和{% endif %}之间的代码块,例如: {% if ...
- UVa 10534 Wavio Sequence (最长递增子序列 DP 二分)
Wavio Sequence Wavio is a sequence of integers. It has some interesting properties. · Wavio is of ...
- java入门之——对象转型
对象的类型转换是我们在编程的时候常常会遇到的,java平台也是如此.比方一些基本类型的数据转型和复合数据的转换. 举例 java语言中主要分为向上转型和向下转型,怎样来了解和掌握这两者转型的关系呢?首 ...
- HTTP请求库——axios源码阅读与分析
概述 在前端开发过程中,我们经常会遇到需要发送异步请求的情况.而使用一个功能齐全,接口完善的HTTP请求库,能够在很大程度上减少我们的开发成本,提高我们的开发效率. axios是一个在近些年来非常火的 ...
- Centos下mahout安装与配置
对于Mahout的安装与配置,须要一个前提.就是hadoop已经安装. 假设没有安装能够參考. http://blog.csdn.net/u012965373/article/details/4533 ...