Есть ли в .NET предопределенные значения констант для DispIds? - PullRequest
0 голосов
/ 04 мая 2018

Атрибуту DispId могут быть переданы определенные значения, которые придают конкретное значение любому, кто использует ваш 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

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

1 Ответ

0 голосов
/ 11 мая 2018

Я просто использовал .NET Reflector для поиска «dispid» во всех сборках в .NET Framework. Похоже, что нет никаких открытых констант или перечислений, которые раскрывают эти стандартные DISPID. Есть пара внутренних классов - System.Dynamic.ComDispIds и System.Windows.Forms.NativeMethods+ActiveX - которые выставляют эти константы, но вы не можете получить их без отражения.

...