欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 »  .NET本质论第一卷:公共语言运行库教程 » 正文

本教程章节列表
最新评论

.net本质论-用元数编程(2)

创建时间:2012年09月18日 15:22  阅读次数:(5771)
分享到:
GetMembers方法以绑定标志设置为模数,返回各个相应的成员。你还可以调用System.Type.GetMember方法,利用成员名称查找个别成员。该方法接收一个附加参数,用于表明想要查找的成员名称。并且,就像GetMembes方法一样,它将返同一个MemberInfo对象的数组,每个成员对应一个MemberInfo对象,默认情形下,只有其名称与请求的名称正好匹配的成员才会在被访问之列。可以通过指定BindingFlags.IgnoreCase标志,执行忽略大小写的搜索。最后要说的是System.Type.GetMember方法还能够允许调用方筛选将要访问成员的种类。调用方通过提供一个MemberTypes标志指明想要的成员种类。下面的示例将会列出名为Dolt(忽略名字的大小写)的所有方法:



注意,当使用BindingFlags.IgncreCase标志时,你可以以任意大小写的形式指定请求的类型名。

前面的示例只是列出了成员的名称,却没有成员的描述。如果想要通过成员做一些有趣的事情,则需要使用更具体的类型。例如,用于字段的成员描述也支持Fieldinfo类型。Fieldinfo类型有一些属性,能够表明哪一个访问修饰符被用于声明字段。例如,Fieldinfo的IsStatic属性表明该字段是实例字段还是静态字段。Fieldinfo的IsinitOnly属性和IsLiteral属性表明该宇段的值是否对应于一个运行时或编译时的常量表达式。最后,Fieldinfo的FieldType属性表明该字段的声明类型。

你既可以使用通用的GetMembers方法,也可以使用较具体的GetFields方法,来提取一个类型的字段,下面的示例产生一个VB子程序,它将类型的所有公共字段设为它们的默认值。



现在假定这个程序运行在下面的C#类型上
public sealed class XYZ{
 public int x:
 public bool y;
 public char c;
 public string s;
 publie object o;
 public double n;
}

该程序会产生下面的VB.NET源代码
Public Sub SetEm(obj as XYZ)
 obj .x = o
 obj .y = False
 obj .s = Nothing
 obj .o = Nothing
obj .n = 0
End Sub
来源:.net学习网
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf】

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论0条
  • 暂无任何评论,请留下您对本文章的看法,共同参入讨论!
发表评论:
留言人:
内  容:
请输入问题 50+5=? 的结果(结果是:55)
结  果: