博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#遍历类的属性 PropertyInfo.Attributes
阅读量:6070 次
发布时间:2019-06-20

本文共 2756 字,大约阅读时间需要 9 分钟。

hot3.png

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 Mypropertyinfo16 {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 }

官方参考:

一个例子: 注意:貌似对字段无效

先建一个类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 Phone28         { 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

你可能感兴趣的文章
Python2和Python3的区别
查看>>
Java继承中的几道面试题
查看>>
Twitch如何实现转码器比FFmepg性能提升65%?(上)
查看>>
4. VPP源码分析(graph node(2))
查看>>
Mysql 下 Insert、Update、Delete、Order By、Group By注入
查看>>
关于Python pandas模块输出每行中间省略号问题
查看>>
WebRTC的拥塞控制和带宽策略
查看>>
Xamarin Android自定义文本框
查看>>
手把手教你搭建一个基于Java的分布式爬虫系统
查看>>
全面了解 Nginx 主要应用场景
查看>>
从零开始学 Web 之 CSS(五)可见性、内容移除、精灵图、属性选择器、滑动门...
查看>>
必应搜索昨日起出现大规模的无法访问
查看>>
手把手教你用Python库Keras做预测(附代码)
查看>>
亚信安全中标广州白云国际机场 全方位提升核心业务APT治理能力
查看>>
TypeScript 发布 3.4 首个 RC 预览版
查看>>
JetCache快速入门
查看>>
Android项目实战(五):TextView自适应大小
查看>>
Java学习笔记--内存划分 堆栈方法区
查看>>
网页一键加入QQ群
查看>>
武汉云服务:网站打不开的几种错误显示及解决方法
查看>>