快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

映射 -- zt 统一教学网

映射  

在许多情况下,我们需要一种方式,能够从元数据中访问属性,C#提供了对映射的支持以访问元数据。通过初始化MemberInfo类型对象,System.Reflection名字空间中的这个对象可以用来发现成员的属性,对元数据进行访问。  

System.Reflection.MemberInfoinf=typeof(MyMath);  

对MyMath类型调用typeof操作符,它返回一个由继续MemberInfo而生成的Type类型的变量。  

下一步是对MemberInfo对象调用GetCustomAttributes,并将希望得到的属性的类型作为一个参数传递给GetCustomAttributes。我们将得到一个对象数组,数组的每个成员的类型都是BugFixAttribute。  

object[]attributes;
attributes=Attribute.GetCustomAttributes(inf,typeof(BugFixAttribute));  

我们就可以遍历这个数组了,打印BugFixAttribute对象的数组,代码下所示:  



属性的打印  


publicstaticvoidMain()
{
MyMathmm=newMyMath();
Console.WriteLine("CallingDoFunc(7).Result:{0}",
mm.DoFunc1(7));

//获取成员信息并使用它访问自定义的属性
System.Reflection.MemberInfoinf=typeof(MyMath);
object[]attributes;
attributes=
Attribute.GetCustomAttributes(inf,typeof(BugFixAttribute));

//遍历所有的属性
foreach(Objectattributeinattributes)
{
BugFixAttributebfa=(BugFixAttribute)attribute;
Console.WriteLine("/nBugID:{0}",bfa.BugID);
Console.WriteLine("Programmer:{0}",bfa.Programmer);
Console.WriteLine("Date:{0}",bfa.Date);
Console.WriteLine("Comment:{0}",bfa.Comment);
}
}  



类型发现  


我们可以通过映象的方式来研究一个组合实体的内容,假如要建立需要显示组合体内部信息的工具或动态地调用组合体中的途径,这一方式是异常有用的。  

通过映象的方式,我们可以知道一个模块、方式、域、属性的类型,以及该类型的每个方式的信号、该类支持的界面和该类的超级类。我们可以通过如下的形式,用Assembly.Load静态方式动态地加载一个组合体:  

publicstaticAssembly.Load(AssemblyName)  

然后,可以将它传递到核心库中。  

Assemblya=Assembly.Load("Mscorlib.dll");  

一旦加载了组合体,我们可以通过调用GetTypes返回一个Type对象数组。Type对象是映射的核心,它表示类、界面、数组、值和枚举等的类型定义。  

Type[]types=a.GetTypes();  

组合休会返回一个类型的数组,我们可以使用foreach-loop结构显示该数组,其输出将有好几页文档之多,下面我们从中找一小段:  

TypeisSystem.TypeCode
TypeisSystem.Security.Util.StringExpressionSet
TypeisSystem.Text.UTF7Encoding$Encoder
TypeisSystem.ArgIterator
TypeisSystem.Runtime.Remoting.JITLookupTable
1205typesfound  

我们得到了一个内容为核心库中类型的数组,可以将它们都打印出来,该数组将有1205个项。  

对一种类型映射我们也可以对组合体中一种类型进行映射。为此,我们可以使用GetType方式从组合体中解析出一个类型:  





返回类别: 教程
上一教程: 用 .NET 实现插件机制
下一教程: 一个简朴的加密/解密方式

您可以阅读与"映射 -- zt 统一教学网"相关的教程:
· 使用基本类库 -- zt 统一教学网
· 属性和元数据 -- zt
· Biztalk Server简介(出版物作品,禁止转载,假如出现法律问题,文责自负)
· 使用 Visual Basic .NET 重载事件处理程序(zt)
· 什么是映射(reflection)?
    微笑服务 优质保证 索取样品