PropertyInfo.Attributes 属性
此属性表示与成员关联的特性。 所有成员都具有相对于特定成员类型定义的特性集。 属性特性使用户能够知道此属性是否是默认属性、SpecialName 属性等等。
若要获取 Attributes 属性,请先获取类类型。 从 Type 获取 PropertyInfo。 从 PropertyInfo 获取特性。
官方示例:获取类的特性
1 using System;
2 using System.Reflection;
3
4 public class Myproperty
5 {
6 private string caption = "Default caption";
7 public string Caption
8 {
9 get{return caption;}
10 set {if(caption!=value) {caption = value;}
11 }
12 }
13 }
14
15 class Mypropertyinfo
16 {
17 public static int Main(string[] args)
18 {
19 Console.WriteLine("\nReflection.PropertyInfo");
20
21 // Define a property.
22 Myproperty Myproperty = new Myproperty();
23 Console.Write("\nMyproperty.Caption = " + Myproperty.Caption);
24
25 // Get the type and PropertyInfo.
26 Type MyType = Type.GetType("Myproperty");
27 PropertyInfo Mypropertyinfo = MyType.GetProperty("Caption");
28
29 // Get and display the attributes property.
30 PropertyAttributes Myattributes = Mypropertyinfo.Attributes;
31
32 Console.Write("\nPropertyAttributes - " + Myattributes.ToString());
33
34 return 0;
35 }
36 }
官方参考:http://msdn.microsoft.com/zh-cn/library/system.reflection.propertyinfo.attributes
一个例子: 注意:貌似对字段无效
先建一个类User
1 namespace ClassLibrary1
2 {
3 public class User
4 {
5 private int userid = 1;
6 public int Userid
7 {
8 get { return userid; }
9 set { userid = value; }
10 }
11 private string userName = "jghg";
12 public string UserName{
13 get { return userName; }
14 set { userName = value; }
15 }
16 private string address = "ghjghj";
17 public string Address{
18 get { return address; }
19 set { address = value; }
20 }
21 private string email = "jhgjhg";
22 public string Email{
23 get { return email; }
24 set { email = value; }
25 }
26 private string phone = "ghjgjg";
27 public string Phone
28 {
29 get { return phone; }
30 set { phone = value; }
31 }
32 }
33 }
接着在主程序中获取类的属性,看代码
1 namespace ConsoleApplication2 {
2 class Program {
3 static void Main(string[] args)
4 {
5 Type type = typeof(ClassLibrary1.User);
6 object obj = Activator.CreateInstance(type);
7 PropertyInfo[] props = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
8 foreach (PropertyInfo p in props) {
9 Console.WriteLine(p.Name);
10 }
11 Console.ReadLine();
12 }
13 }
14 }
需要引入命名空间:
using System.Reflection;
转载于:https://my.oschina.net/weisenz/blog/200614