|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
感觉很多控件都必须自己去写代码;用了WebMatrix感觉也不是很好,毕竟没有很强的WYSIWYG效果。现在就不知道如何是好了。一.甚么是Attribute
先看上面的三段代码:
1.自界说Attribute类:VersionAttribute- [AttributeUsage(AttributeTargets.Class)]publicclassVersionAttribute:Attribute{publicstringName{get;set;}publicstringDate{get;set;}publicstringDescribtion{get;set;}}
复制代码 2.利用自界说Attribute的Class:- [Version(Name="hyddd",Date="2009-07-20",Describtion="hydddsclass")]publicclassMyCode{//...}
复制代码 3.下面这个Class中的Attribute一样平常会被怎样利用呢?- classProgram{staticvoidMain(string[]args){varinfo=typeof(MyCode);varclassAttribute=(VersionAttribute)Attribute.GetCustomAttribute(info,typeof(VersionAttribute));Console.WriteLine(classAttribute.Name);Console.WriteLine(classAttribute.Date);Console.WriteLine(classAttribute.Describtion);}}
复制代码 示例终了!下面三段代码信任已申明了Attribute也许是一个甚么工具和怎样往用。
二.深切会商Attribute
1.Attribute的观点界说
关于Attribute观点的界说,我间接援用《你必需晓得的.NET之特征和属性》中的一段来讲明:
MADN的界说为:大众言语运转时同意增加相似关头字的形貌声明,叫做attributes,它对程序中的元素举行标注,如范例、字段、办法和属性等。Attributes和Microsoft.NETFramework文件的元数据(metadata)保留在一同,能够用来向运转时形貌你的代码,大概在程序运转的时分影呼应用程序的举动。
我们复杂的总结为:定制特征attribute,实质上是一个类,其为方针元素供应联系关系附加信息,并在运转期以反射的体例来猎取附加信息。
噢,本来Attribute的目标是为元素供应联系关系附加信息。个中,下面第一段代码中“[AttributeUsage(AttributeTargets.Class)]”申明了Attribute供应附加信息的元素是Class,以是假如下面第二段的代码改成:- publicclassMyCode{[Version(Name="hyddd",Date="2009-07-20",Describtion="hydddsclass")]publicvoidTest(){}}
复制代码 会呈现编译毛病。
2.Attribute作为编译指令
Attribute类是在编译的时分被实例化的,而不是像一般的类那样在运转时分才实例化。以是在第三段代码中,你能够在没有实例化MyCode对象的情形下取到MyCode的Attribute信息。因为Attribute类是在编译的时分被实例化的,以是你还能够用内部工具保护这些Attribute信息。
3.Attribute与Property
从中文来讲,Attribute和Property的中文都叫“属性”,很简单让人搅浑。如今的文章,Attribute一样平常翻译为”特征”,而Property称为“属性”。
也许你会问,我用静态的Property/Field一样能够做到在不实例化的时分拿到一些信息,假如如许的话,Attribute又有甚么存在乎义呢?
1.Property:
Property能够说是一个面向对象的观点,供应了对公有字段的会见封装,在C#中以get和set会见器办法完成对可读可写属性的操纵,供应了平安和天真的数据会见封装。好比:- publicclassRobot{privatestringname="";//字段:FieldpublicstringName//属性:Property,对Field举行封装。{get{returnname;}set{name=value;}}}
复制代码 2.Attribute:
Attribute的方针是:为元素供应附加信息。它的感化更相似于正文。
能够说,Property/Field和Attribute是两个完整分歧的观点,固然他们有些时分能做一样的事,但请记着,他们是从实质上就分歧的两个工具。
三.完成本人的Attribute时必要注重的一些成绩
1.自界说的Attribute必需间接大概直接承继System.Attribute。
2.这里有一个商定:一切自界说的特征称号都应当有个Attribute后缀。由于当你的Attribute施加到一个程序的元素上的时分,编译器先查找你的Attribute的界说,假如没有找到,那末它就会查找“Attribute称号"+Attribute的界说。假如都没有找到,那末编译器就报错。这就是为何我能够再下面第一段代码中,界说一个VersionAttribute,但在第二段代码中,我利用倒是Version这个Attribute。:>
竟发现没有太大的帮助。总觉得要用起来,感觉到不了位。因为公司机器的原因,一直没有安装vs.net(也从来没有用过)。以前做asp的时候一直用DW(感觉其代码联想功能不错),可现在到了asp.net却不习惯了。 |
|