You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET是否存在与DispIdAttribute配套的DispIds预定义常量?

关于.NET中DispId配套常量列表的解答

好问题!其实你要找的这些标准DISPID常量,.NET里确实有官方定义的枚举,只是它藏在相对冷门的命名空间里,容易被忽略~

在哪里能找到这些常量?

这些标准DISPID值都定义在 System.Runtime.InteropServices.ComTypes 命名空间下的 DISPID 枚举中。这个枚举包含了你提到的(以及更多常用的)特殊DispId值:

  • DISPID_CONSTRUCTOR = -6(对应构造函数)
  • DISPID_COLLECT = -8(对应集合类的默认遍历/收集行为)
  • 还有其他常见的实用值:
    • DISPID_VALUE = 0(对象的默认属性/方法)
    • DISPID_NEWENUM = -4(用于枚举集合的枚举器)
    • DISPID_PROPERTYPUT = -3(属性的set方法)

怎么使用?

只需要在代码中引用这个命名空间,然后直接使用枚举值即可,不用再硬编码“魔术数字”:

using System.Runtime.InteropServices.ComTypes;

[DispId((int)DISPID.CONSTRUCTOR)]
public void MyConstructor()
{
    // 构造函数逻辑
}

为什么容易找不到?

主要是因为 System.Runtime.InteropServices.ComTypes 这个命名空间不是日常.NET开发的高频引用项,很多开发者在处理COM互操作时可能会直接查文档硬编码数值,反而错过了这个官方提供的枚举。另外,在早期的.NET Framework版本中,这个枚举可能需要手动确认引用,但在.NET Core/.NET 5+之后,它已经包含在默认的运行时引用里了。

内容的提问来源于stack exchange,提问作者StayOnTarget

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:06:19