事实上,这是一个在大多数情况下tlbimp will convert an interface to a coclass的功能。特别是如果在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
并获得完全相同的效果。这种转换有什么用?