【发布时间】:2018-10-15 05:09:44
【问题描述】:
DispId attribute 可以传递某些值,这些值赋予使用您的 COM 对象的任何人特定的含义。
典型的建议似乎只是硬编码适合您目的的“幻数”。但由于 .NET 包含了 DispIdAttribute ,我期待一个常量列表随之而来——但一直找不到。这种事情存在吗?
为了记录,我正在谈论的 DispId 值是:
DISPID_COLLECT -8
DISPID_CONSTRUCTOR -6
DISPID_DESTRUCTOR -7
DISPID_EVALUATE -5
DISPID_NEWENUM -4
DISPID_PROPERTYPUT -3
DISPID_UNKNOWN -1
DISPID_VALUE 0
参考https://msdn.microsoft.com/en-us/library/windows/desktop/ms221242(v=vs.85).aspx
【问题讨论】:
-
如果我记得我以前的 VB6 日子,很确定这些值也是神奇的数字:/
-
我几乎可以肯定没有。即使是您链接中的 MSDN 示例也只使用纯整数文字
-
预计只有其中两个会被客户端应用程序使用。 DISPID_VALUE 表示默认属性,在 C# 中是索引器。 DISPID_NEWENUM 表示迭代器,在 C# 中实现 IEnumerator 时会自动获取。这些分配是自动的,无需使用 [DispId],因此框架中没有相应的声明。