C# 高级主题: Attribute,反射,多线程

C# 高级主题: Attribute,反射,多线程

ID:40546335

大小:394.00 KB

页数:27页

时间:2019-08-04

C# 高级主题: Attribute,反射,多线程_第1页
C# 高级主题: Attribute,反射,多线程_第2页
C# 高级主题: Attribute,反射,多线程_第3页
C# 高级主题: Attribute,反射,多线程_第4页
C# 高级主题: Attribute,反射,多线程_第5页
资源描述:

《C# 高级主题: Attribute,反射,多线程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C#高级主题一自定义特性(Attribute)应用二反射的应用三多线程的应用Preparedby刘富凰2007-11-072009-10加上.C#3.5的内容一自定义特性(Attribute)Attribute概述Attribute是一个类,下面是msdn文档对它的描述:公共语言运行时允许你添加类似关键字的描述声明,叫做attributes,它对程序中的元素进行标注,如类型、字段、方法和属性等。Attributes和Microsoft.NETFramework文件的元数据保存在一起,可以用来向运行

2、时描述你的代码,或者在程序运行的时候影响应用程序的行为。在.NET中,Attribute被用来处理多种问题,比如序列化、程序的安全特征、防止即时编译器对程序代码进行优化从而代码容易调试等等。Attribute作为编译器的指令在C#中存在着一定数量的编译器指令,如:#defineDEBUG,#undefineDEBUG,#if等。这些指令专属于C#,而且在数量上是固定的。而Attribute用作编译器指令则不受数量限制。比如下面的4个Attribute:Conditional:起条件编译的作用,只有

3、满足条件,才允许编译器对它的代码进行编译。一般在程序调试的时候使用。DllImport:用来标记非.NET的函数,表明该方法在一个外部的DLL中定义。Obsolete:这个属性用来标记当前的方法已经被废弃,不再使用了。Serializable:指示一个类可以序列化。需要保存在ViewState中的对象需要可序列化,当Session变量要保存在数据库中时,也需要该session变量表示的对象是可序列化的。Attribute类构造函数:protectedAttribute():保护的构造器,只能被At

4、tribute的派生类调用。三个静态方法:staticAttributeGetCustomAttribute():这个方法有8种重载的版本,它被用来取出施加在类成员上指定类型的Attribute。staticAttribute[]GetCustomAttributes():这个方法有16种重载版本,用来取出施加在类成员上指定类型的Attribute数组。staticboolIsDefined():由八种重载版本,看是否指定类型的定制attribute被施加到类的成员上面。实例方法:boolIsDe

5、faultAttribute():如果Attribute的值是默认的值,那么返回true。boolMatch():表明这个Attribute实例是否等于一个指定的对象。公共属性:TypeId:得到一个唯一的标识,这个标识被用来区分同一个Attribute的不同实例。我们可以自定义我们自己的Attribute,所有自定义的Attribute必须直接或者间接地从Attribute这个类派生,如:publicMyCustomAttribute:Attribute{...}Attribute的命名规则:A

6、ttribute的类名+"Attribute",引号中的Attribute是可选的。AttributeUsage类可以通过AttributeUsage的Attribute来限定你的Attribute所施加的元素的类型。代码形式如下:[AttriubteUsage(参数设置)]public自定义Attribute:Attribute{...}AttributeUsage本身也是一个Attribute,这是专门施加在Attribute类的Attribute.publicenumAttributeTar

7、gets{All=16383,Assembly=1,Module=2,Class=4,Struct=8,Enum=16,Constructor=32,Method=64,Property=128,Field=256,Event=512,Interface=1024,Parameter=2048,Delegate=4096,ReturnValue=8192}作为参数的AttributeTarges的值允许通过“或”操作来进行多个值得组合,如果你没有指定参数,那么默认参数就是All。Attribute

8、Usage除了继承Attribute的方法和属性之外,还定义了以下三个属性:AllowMultiple:读取或者设置这个属性,表示是否可以对一个程序元素施加多个Attribute。Inherited:读取或者设置这个属性,表示是否施加的Attribute可以被派生类继承或者重载。ValidOn:读取或者设置这个属性,指明Attribute可以被施加的元素的类型。AttributeUsage的使用例子:usingSystem;namespaceAttTargsCS{//该Attrib

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。