您的位置:首页 > 其它

定制特性

2009-03-18 14:47 141 查看
[FiledName("SocialSecurityNumber")]
public string SocialSecurityNumber{
get{
//etc
编译器:
1.把字符串Attribute添加到这个名称后面,形成一个组合名称FieldNameAttribute,如果该特性名称以字符串Attribute结尾则不添加
2.在其搜索路径中所用命名空间搜索有指定名称FieldNameAttribute的类,如果找到该类并且该类直接或者间接派生自System.Attribute。

[AttributeUsage(AttributeTargets.Property,AllowMultiple=false,Inherited=false)]
public class FieldNameAttribute:Attribute
{
private string name;
public FieldAttribute(string name)
{
this.name=name;
}
private string comment;
public string Comment
{
get{return comment;}
set{comment=value;}
}
}

并且该属性类指定了

该特性可以应用到哪些程序元素上(类,结构,属性,方法等)

AttributeTargets枚举成员如下:All,Assembly,Class,Constructor,Delegate,Enum,Event,Field,GenericParameter,Interface,Method,Module,Parameter,Property,Return Value,Struct

在指定定制特性的有效目标元素时,可以使用按位or运算符把这些值组合起来,如AttributeTargets.Property|AttributeTargets.Field

它是否可以多次应用到同一程序元素上

[FieldName("SocialSecurityNumber")]
[FieldName("NationalInsuranceNumber")]
public string SocialSecurityNumber
{
//etc

特性在应用到类或接口上时,是否由派生类或接口继承,如果Inherited设置为true,就表示应用到类或接口上的特性也可以自动应用到所有派生的类或接口上。如果特性应用到方法或者属性上,也可以自动应用到该方法或属性的重写版本上

这个特性有哪些必选和可选参数,构造函数的参数是必选参数,类的属性为可选参数可以通过如下语法设置

[FieldName("SocialSercurityNumber",Comment="this is the primary key field")]
public string SocialSecurityNumber
{
//etc
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: