给你的属性加个说明

给你的属性加个说明-Begin-前言我们都知道,类是对象的抽象,主要包含属性和方法,属性是用来描述和反映对象特征的参数,方法是用来描述对象的行为,那如果我想对类、属性、方法做进一步的描述呢?这时候我们可以使用特性。自定义特性我们可以通过自定义特性,自由地实现

大家好,欢迎来到IT知识分享网。

-Begin-

前言

我们都知道,类是对象的抽象,主要包含属性和方法,属性是用来描述和反映对象特征的参数,方法是用来描述对象的行为,那如果我想对类、属性、方法做进一步的描述呢?

这时候我们可以使用特性。

自定义特性

我们可以通过自定义特性,自由地实现对属性方法的描述。

创建并使用自定义特性可以分为以下四个步骤:

1、声明自定义特性:创建一个类,取名为CustomAttribute,必须以Attribute结束,并继承System.Attribute类,同时可以加一些声明,如下所示:

 /// <summary> /// 说明该类型只针对类和属性有效 /// </summary> [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property)] public class CustomAttribute : Attribute { } 

2、构建自定义特性:自定义特性类本质也是类,我们在自定义特性类里创建一些属性,并创建一个构造方法用于初始化,(需要资料加VX:xiketang777)代码如下:

 /// <summary> /// 说明该类型只针对类和属性有效 /// </summary> [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property)] public class CustomAttribute : Attribute { /// <summary> /// 构造方法初始化 /// </summary> /// <param name="DisplayName"></param> /// <param name="DisplayWidth"></param> public CustomAttribute(string DisplayName, int DisplayWidth) { this.DisplayName = DisplayName; this.DisplayWidth = DisplayWidth; } /// <summary> /// 显示名称 /// </summary> public string DisplayName { get; set; } /// <summary> /// 显示宽度 /// </summary> public int DisplayWidth { get; set; } } 

3、应用自定义特性:接下来就是如何使用了,我们重新创建一个实体类,在属性前面加一段代码,特性一般写在中括号里。

 public class Points { [Custom("站点名称", 100)] public string StationNo { get; set; } [Custom("P1数据名称", 100)] public float TD_P1 { get; set; } [Custom("P2数据名称", 100)] public float TD_P2 { get; set; } } 

4、获取自定义特性:创建自定义特性的目的还是在于获取设置的数据,这里我们通过反射来实现,代码如下:

 Type t = typeof(Points); foreach (PropertyInfo pi in t.GetProperties()) { string propertyName = pi.Name; string displayName = pi.GetCustomAttribute<CustomAttribute>()?.DisplayName; int displayWidth = pi.GetCustomAttribute<CustomAttribute>().DisplayWidth; Console.WriteLine("属性名称:"+propertyName+";显示名称:"+displayName + ";显示宽度:" + displayWidth); } 
给你的属性加个说明

总结

以上就是自定义特性的使用,希望对大家有帮助。

至于在开发项目中如何使用,后面会以实际的一个应用场景来说明。

-END-

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/88621.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信