首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

Components
组件

在一个应用程序中的组件将由一个类ID(CLSID)标识。自动建立的CLSID会随着程序集的每个新版本而改变。所以,默认情况下,当你在特性[AssemblyVersion]中为版本号定义了*时,这个ID会随着每次编译而改变。这个默认的行为很有用,因为COM客户端使用这个CLSID来访问组件,并且它必须随着新的程序集一起重新生成。

在组件服务浏览器中刷新组件

如果你创建了一个程序集的新版本,并且又重新注册了一遍,那你必须用组件服务管理工具刷新这些组件;否则这些新版本不会被显示出来。要刷新这个视图,你可以在组件服务浏览器选择My Computer,然后选择Action→Refresh All Components,然后选择应用程序下面的Components,Action →Refresh。

如果你在一个程序集中有多个组件,并且并不是所有组件都需要在每次编译时设定新的CLSID,那你可以通过特性[Guid()]直接设置其CLSID,这个GuidAttribute特性类在System.Runtime.InteropServices命名空间下。你可以用guidgen.exe工具来创建这个特性需要的GUID。

 

   [Guid("49CD1F2F-7A16-4d6e-9D2B-B60E5089CEB2")] 

   [EventTrackingEnabled]

   public class CourseManagement : ServicedComponent,

  ICourseManagement

COM客户端也可以使用progid来创建一个组件。progid比CLSID更易于记忆,因为它是一个可读的名字。progid只是获取CLSID的一个中间步骤。在注册表中,所有的progid都直接列在注册表项HKCR下。progid只是映射到CLSID,通过progid的注册表项,你可以找到CLSID。这里面记载的是对应组件的CLSID。而组件更多的信息可以通过CLSID来获取,下面将讨论这些内容。默认生成的progid由包含命名空间的类名组成。

Progid最大的长度

一些COM客户端无法使用长度超过39个字符的progid。如果自动生成的progid的长度超过了39个字符,你必须使用特性[ProgId]手工设定它。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论