2023年6月20日发(作者:)
C#中的特性基本理解定制特性可以应⽤的⽬标元素可以为:程序集(assembly)、模块(module)、类型(type)、属性(property)、事件(event)、字段(field)、⽅法(method)、参数(param)、返回值(return)定制特性以[,]形式展现,放在紧挨着的元素上,多个特性可以应⽤于同⼀元素,特性间以逗号隔开,以下表达规则有效:[AttributeUsage][ Flags]、[AttributeUsage, Flags]、[Flags, AttibuteUsageAttribute]、[AttributeUsage(), FlagesAttribute()]attibute实例,是在编译期进⾏初始化,⽽不是运⾏的时候。定制特性类型,必须直接或者间接的继承⾃ute类,⽽且该类型必须有公有构造函数来创建其实例。所有⾃定义的特性名称都应该有个Attribute后缀,这是习惯性约定。定制特性也可以应⽤在其他定制特性上,这点也很好理解,因为定制特性本⾝也是⼀个类,遵守类的公有规则。例如很多时候我们的⾃定义定制特性会应⽤AttributeUsageAttribute特性,来控制如何应⽤新定义的特性。
[AttributeUsageAttribute(),[AttributeUsageAttribute(),AllowMultiple = true,
Inherited = true]class MyNewAttribute: ute{//}定制特性不会影响应⽤元素的任何功能,只是约定了该元素具有的特质。所有⾮抽象特性必须具有public访问限制。定制特性常⽤于在运⾏期获得代码注释信息,以附加信息来优化调试。定制特性可以应⽤在某些设计模式中,如⼯⼚模式。定制特性还常⽤于位标记,⾮托管函数标记、⽅法废弃标记等其他⽅⾯。
特性能⼲嘛1)功能性信息:如[Serializable]加在类前表⽰该类可被串⾏化。[Serializable]public class HumanProperty2)提⽰性信息:如[Obsolete]表⽰该⽅法已经过时,提醒程序员使⽤新的替代函数。[Obsolete("Use another method : Average(), instead!", true)]public virtual void CalcAverage(int speed)3)限定性信息:如[Conditional("DEBUG")]表⽰下⾯的⽅法只有在调试模式下才有效。[Conditional("DEBUG")]public void UnitTest()4)描述性信息:如[Description]对所指对象进⾏详细描述。public enum CreditCardType{ [Description("Unknown")] Unknown, [Description("Corp Card")] CC}
可以定义⼀个特性⽤来验证⽤户是否登录 ///
发布者:admin,转转请注明出处:http://www.yc00.com/web/1687249387a7.html
评论列表(0条)