- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
北京传智播客教育
(*)Attribute(特性、标记)
就是一个标签,在使用当前类的地方,通过反射获取该特性。
一般为了与Property(属性)区分,所以把attribute翻译成“特性”。
特性没有什么实际意义,就是打了一个标签(可能该类中还会存储一些数据)。
Attribute用来对类、属性、方法等标注额外的信息,贴一个标签。
Attribute的格式:[Attribute类名(构造函数参数)],如果没有参数可以简写为[Attribute类名]
常用内置的Attribute:
[Obsolete(推荐用IncAge方法)]:过时成员。一个方法过时一般是不推荐再使用,不会再修改bug,甚至是在今以后版本中删除。
[Bindable]:把属性标记为Bindable,这个属性就可以进行数据绑定
[DisplayName],开发一个电话号码UserControl,将TelphoneNum字段的DisplayName设为“电话号码”。【使用UserControl来演示】
Attribute就是类,Attribute类名一般都以Attribute结尾,使用的时候不用加Attribute这个结尾。使用Attribute的时候给的参数其实就是构造函数
反编译DisplaynameAttribute,发现没有特殊代码。标签本身是没有含义,只是起到标注的作用,具体怎么解释、使用这个标识,是由使用者来决定:属性视图窗口、C#编译器。相当于在放上画一个“拆”,本身这个字没有含义。
北京传智播客教育
(*)自定义Attribute
Attribute都从System. Attribute类继承,类名一般以Attribute结尾
创建构造函数
标记类的用途—AttributeUsage标记(标记的标记):AttributeTargets:可以添加到哪些成员上。AllowMultiple:是否允许在一个成员上标记这个Attribute的多个实例,默认false。标注在Attribute类的类名上方。
Attribute只是给类、成员做标记,本身没有什么意义,不会发生任何动作,就像小偷踩点在门上做标记(StealableAttribute)一样,具体这个标记会起到什么作用是由使用这个类、成员的代码决定的。
Property.GetCustomerAttribute()
北京传智播客教育
(*)将一个对象,显示到网页上
1.写一个“ ”WinForm程序“表单生成器”,browser.DocumentText= html
2.[TableName(T_Persons)]
class Person
{
[ColumnName(FName)]
public string Name { get; set; }
[ColumnName(FAge)]
public int Age { get; set; }
}
NHibernate
Person p1 =......;
db.Insert(p1);
带数据校验Attribute.。 mvc中类似功能。
北京传智播客教育
(*)练习:正则表达式校验Attribute
编写正则表达式验证器,在属性上根据需要添加RegexValidatorAttribute。这种用法在 MVC中用的非常多
class Customer
{
[RegexValidator(@^\S+@\S+$)]
public string Email{get;set;}
[RegexValidator(@^\d{6}$)]
public string Postcode{get;set;}
[RegexValidator(@^\d{15}$|^\d{18}$)]
public string IdNumber{get;set;}
}
编写Validate方法,在Validate方法中会对标记了RegexValidator的属性采用指定的正则表达式进行数据校验。步骤:
1、开发RegexValidatorAttribute,提供保存正则表达式的Pattern属性,以及一个接受正则表达式的构造函数。用AttributeUsage标记RegexValidatorAttribute只能添加到属性上。
2、 Validate方法中取得obj对应的Type对象,遍历type.GetProperties()所有属性,如果属性是string类型,并且定义了RegexVa
文档评论(0)