c# - .NET 是否为 DispId 预定义了常量值?

标签 c# .net com interop

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

例如,here is one example .

典型的建议似乎是硬编码适合您目的的“魔数(Magic Number)”。但是,由于 .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

最佳答案

我刚刚使用 .NET Reflector 在 .NET Framework 的所有程序集中搜索“dispid”。似乎没有公开这些标准 DISPID 的公共(public)常量或枚举。有几个内部类——System.Dynamic.ComDispIdsSystem.Windows.Forms.NativeMethods+ActiveX——公开了这些常量,但您无法获取他们没有反射(reflection)。

关于c# - .NET 是否为 DispId 预定义了常量值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50179564/

相关文章:

c# - WPF - 将窗口标题绑定(bind)到其他项目公共(public)设置

c# - MEF(托管可扩展性框架)是否进行 "duck"打字?

c# - 如何访问从 Powershell 的 .NET 事件返回的对象参数

.net - 启动 Windows 应用程序时错误代码 0xc0000135(或 -1073741515 退出代码)意味着什么?

com - 如果我在 VB6 项目中使用类型库 (.tlb),是否需要将它与 .exe 一起分发?

windows - 如何在 Zoom Text 和 Windows 之间插入我的代码?

c# - 如何使用 C# 反序列化 JSON

c# - 字符串拆分逻辑 C#

c# - 条件 Lambda Foreach

c++ - 调用 ID2D1RenderTarget::DrawTextLayout() 不工作