.NET是否为DispIds预定义了常量值?

时间:2018-05-04 16:36:44

标签: c# .net com interop

DispId attribute可以传递某些值,这些值赋予消费COM对象的任何人特定的含义。

例如,here is one example

典型的建议似乎是硬编码适合您目的的“神奇数字”。但是由于.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

ref https://msdn.microsoft.com/en-us/library/windows/desktop/ms221242(v=vs.85).aspx

1 个答案:

答案 0 :(得分:2)

我刚刚使用.NET Reflector在.NET框架中的所有程序集中搜索“dispid”。似乎没有公开这些标准DISPID的 public consts或enums。有几个内部类 - System.Dynamic.ComDispIdsSystem.Windows.Forms.NativeMethods+ActiveX - 会暴露这些常量,但如果没有反射,你就无法得到它们。