Импорт библиотеки базового типа с использованием инструмента tlbimp.exe
всегда создает интерфейс для каждого coclass
. Например, этот IDL-описаниеКаковы интерфейсы CoClass в импортированных сборках именно для?
interface IFoo : IUnknown
{
HRESULT DoSomething();
}
coclass Bar
{
[default] interface IFoo;
}
приводит к:
- интерфейс,
IFoo
как представление интерфейса COM, - Класс,
BarClass
как представление COM компонентного класса и - интерфейс
Bar
, аннотированныйCoClassAttribute
.
Если идентификаторы Bar
и IFoo
равны. На этой теме: MSDN:
Этот интерфейс имеет тот же IID, что и стандартный интерфейс для coclass. С помощью этого интерфейса клиенты всегда могут регистрироваться как приемники событий.
Это единственное, что я нашел на эту тему. Я знаю, что из-за CoClassAttribute
я могу использовать интерфейс для создания экземпляров фактического класса. Я также знаю, что (практически) я могу просто использовать BarClass
, чтобы создать новый экземпляр класса. Я не понимаю, почему процесс импорта создает интерфейс Bar
, даже если coclass
не определяет источник события, и поэтому к нему нельзя подключить приемник событий.
Можно ли удалить в этом примере интерфейс Bar
или есть другие риски, которые я еще не рассмотрел?
Например по disassembling the interop assembly.
Я исправил имена в вопросе. Спасибо за Ваш ответ! Поскольку я не переношу приложение VB6, и мой примерный класс выше не определяет события, я думаю, что ваш ответ подразумевает, что я могу удалить интерфейс, отвечая на мой quesiton в последнем предложении. Пожалуйста, исправьте меня, если я ошибаюсь! В противном случае - спасибо за ваши усилия! :) – Carsten