首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定Com+类ID?

如何确定Com+类ID?
EN

Stack Overflow用户
提问于 2013-10-05 04:36:02
回答 1查看 155关注 0票数 1

与此this问题相关:

我有一个C#模板/项目,我必须在其中放入一些自定义代码。文档中说:“如果更改了四个公共函数以外的任何代码,则COM+类ID可能会更改,并且对象安全脚本将无法工作,从而导致BSTCustomValidation.dll验证组件无法运行。”

当我添加了一堆私有方法时,COM+类ID似乎发生了变化,并且没有通过验证。但是,当我创建一个接口并让类继承它时,它很好地通过了验证,大概是因为Com class ID与原始模板相同。

为什么添加私有方法会更改Com+类ID,然后添加接口又会将其更改回来。

EN

回答 1

Stack Overflow用户

发布于 2013-10-05 11:36:33

C# (或其他CLR语言)通过以下两种方式之一为COM可见对象生成CLSID:

  1. 使用Guid属性显式指定CLSID,或者
  2. CLR运行库根据类的type为您生成一个CLSID。我不知道确切的算法,只知道它不是随机的(否则CLSID会因构建而改变)。

因此,添加私有方法会更改类的类型数据,从而更改GUID;但作为接口显然不会影响GUID生成算法。

如果你想在没有接口的情况下添加私有方法,那么获取当前的GUID (例如,通过反射),并使用GUID属性显式指定该Guid。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19190327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档