Зачем tlbimp конвертировать интерфейсы в коклассы?
Фактически это функция, которая в большинстве случаев преобразует интерфейс в кокласс. Конкретно если в IDL у меня есть
interface IFirst {
}
interface ISecond {
HRESULT GetFirst( IFirst** );
}
coclass First {
interface IFirst;
}
тогда tlbimp увидит, что First
единственный класс для реализации IFirst
, поэтому он создает интерфейс.NET, где interface IFirst
заменяется на class First
interface ISecond {
First GetFirst(); // co-class returned, not interface
}
что, по-видимому, полезно в некотором роде.
Как это может быть полезно? Я имею в виду class First
будет иметь те же методы, что и interface IFirst
во всяком случае, так что это ничего не добавляет, поэтому без этого преобразования я мог бы просто передать interface IFirst
везде и получай точно такой же эффект. Какая польза от этого преобразования?