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