【MCTS】Application Development Foundation 学习笔记---

来源:互联网 发布:淘宝模特照相视频 编辑:程序博客网 时间:2024/06/06 04:27

Focus 特性

 

什么是特性(Attributes)?

 

特性是用于对类型,方法和属性的描述,这种描述可以在编程时通过反射技术查询到。


特性通常用于:
1.用于指定一些类的安全级别
2.用于指定安全拒绝的特权以降低风险。
3.用于定义一些扩展功能,比如可序列化支持等。
4.用于描述程序集以提供标题,描述和版权注意等。

 

特性类型都是继承自System.Attribute 基类并且c#用[] 标识。
如下说明如何添加一个程序集属性:


[assembly: AssemblyTitle("ch01cs")]
[assembly: AssemblyDescription("Chapter 1 Samples")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Microsoft Learning")]
[assembly: AssemblyProduct("ch01cs")]
[assembly: AssemblyCopyright("Copyright © 2006")]
[assembly: AssemblyTrademark("")]

 

Visual Studio 会自动为我们的程序集创建一些标准的特性,包括标题,公司,唯一ID和版本信息等。
你应该去修改这些信息,因为在创建时有许多信息是空的,比如程序集的描述信息等。


特性当然不知能用于想其他开发这描述你的程序集,它们还可以定义一些必须或者一些扩展的功能。
比如,使一个类可以序列化,我们需要给这个类添加Serializable 特性。
如:
[Serializable]
class ShoppingCartItem
{
}
如果没有Serializable特性,该类是无法被序列化的。
类似的,下面的代码则用特性说明该类需要读取目录C:/boot.ini的文件。
如果运行时没有发现该文件,程序将抛出异常。
using System;
using System.Security.Permissions;
[assembly:FileIOPermissionAttribute(SecurityAction.RequestMinimum,
Read=@"C:/boot.ini")]
namespace DeclarativeExample
{
 class Class1
 {
  [STAThread]
  static void Main(string[] args)
  {
   Console.WriteLine("Hello, World!");
  }
 }
}


 

什么是类型定向(Type Forwarding)?------不知道该怎么翻译(暂叫类型定向)

 

类型定向是一种特性(在TypeForwardedTo中实现),它允许你将一个类型从一个程序集A转移到程序集B中,并且这个过程中我们无需重新编译调用程序集A的客户端程序。

当一个组件被装载并且被客户端程序调用时,我们可以用类型定向去从这个组件中移动一个类型到另一个程序集中并加载更新后的组件(和其他必要的组件),而客户端程序无需重新编译就能执行。

类型定向只是用于组件被一个正在运行的应用程序调用的时候。
当我们重新编译一个应用程序时,其中有一些需要的程序集被已经在运行的应用程序中使用时。

 

把一个类型从一个类库移动到另一个类库,需要如下几步:
1.添加一个TypeForwardedTo 特性给源类库程序集。
2.从源类库中转换类型定义。
3.将类型定义粘贴到目标类库。
4.重新编译两个类库。

 

如:该特性定义了用于将TypeA移向DestLib类库。
using System.Runtime.CompilerServices;

[assembly:TypeForwardedTo(typeof(DestLib.TypeA))]

 

 

 


原创粉丝点击