您的位置:首页 > 编程语言 > C#

C#遍历类的属性 PropertyInfo.Attributes

2015-12-07 16:18 387 查看
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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c# Reflection