我有以下非常简单的接口:
[uuid(0d585932-fbc4-4b0a-90b5-ccf34aefd4c6)]
[version(COMPONENT_VERSION)]
interface IPerson : IInspectable
{
[propget] HRESULT Name([out, retval] HSTRING* value);
[propput] HRESULT Name([in] HSTRING value);
[propget] HRESULT Surname([out, retval] HSTRING* value);
[propput] HRESULT Surname([in] HSTRING value);
}
[uuid(863571FC-4CBB-47E8-8BD3-2709D5CB7D0D)]
[version(COMPONENT_VERSION)]
interface ICitizen : IPerson
{
[propget] HRESULT Address([out, retval] IAddress** value);
[propput] HRESULT Address([in] IAddress* value);
}
当我尝试为 WinRT 编译此 MIDL 时,我收到以下错误:
错误MIDL5004:接口必须从 IInspectable 继承:ICitizen
我真的很困惑在 WinRT 下 COM 变成了什么!如果从另一个接口继承这样简单的事情不再可能,我们如何设计应用程序?
我已经搜索了 WinRT 的 MIDL 的文档,但我找不到它!更好的是在谷歌上搜索错误 MIDL5004 没有显示任何结果!
Microsoft 的任何人都可以解释如何创建一个从另一个继承自 IInspectable 的接口继承的接口。在另一个测试中,我使用 C++/CX 创建了相同的接口,并且能够创建一个继承自 IPerson 的 ICitizen 接口。为什么 WinRT 的 MIDL 不再允许这样做,这是 COM 体系结构的基础,创建了接口层次结构。
感谢您的投入 O. Rouit