У меня есть COM-компонент VC ++ с библиотекой типов. Библиотека типов этого компонента объявляет интерфейс и совместный класс:
[
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
и SomethingClass
.
Я просмотрел файлы .idl проекта - идентификатор Workflow
больше нигде не используется.
В чем причина этого странного поведения и как его можно обойти?