我有一个带有类型库的 VC++ COM 组件。该组件的类型库声明了一个接口和一个协同类:
[
object,
uuid( ActualUuidHere),
dual,
nonextensible,
oleautomation,
hidden,
helpstring( ActualHelpStringHere )
]
interface IWorkflow : IDispatch
{
//irrelevant properties here
}
[
uuid(ActualClassIdHere),
noncreatable
]
coclass Workflow {
[default] interface IWorkflow;
};
为了使用来自 C# 应用程序的组件,我添加了对 C# 项目的引用并生成了一个互操作程序集。
在 Visual Studio 2003 的对象浏览器中,我看到互操作包含:
public abstract interface IWorkflow;
public abstract interface workflow : IWorkflow;
public class workflowClass : System.Object;
很明显,由于某种原因,类的名称和接口的大小写不同。这不会发生在同一类型库中声明的其他 20 多个接口 - 因为它们ISomething
对应于Something
and SomethingClass
。
我查看了项目的 .idl 文件 - 标识符Workflow
未在其他任何地方使用。
这种奇怪行为的原因是什么?如何解决?