Можно ли реализовать интерфейс [exclusiveto] из типа Windows на моем собственном классе времени выполнения? - PullRequest
0 голосов
/ 25 сентября 2018

В настоящее время я экспериментирую с Голографическим удаленным взаимодействием и обнаружил, что различные части голографического API, обычно реализуемые Windows, происходят из других мест.
Например, мой HolographicSpace происходит от Microsoft.Perception.Simulation.dll, которыйэто библиотека, ссылка на которую приведена выше.

Мне интересно узнать, как это было сделано, поэтому я создал новый компонент C ++ / WinRT и попытался извлечь из Windows.Graphics.Holographic.IHolographicSpace в моем файле .idl, ноКомпилятор MIDL выдаст мне это сообщение об ошибке: error MIDL5051: [msg]use of the [exclusiveto] interface is not valid, use the runtimeclass for which this interface is exclusiveto instead.

Достаточно справедливо, в противном случае, что будет использовать [exclusiveto]?

Однако остается вопрос: как может внешнийкомпонент делает вид, что реализует тип из пространства имен Windows?Я имею в виду, что теоретически я могу использовать шаблон структуры implements<> и реализовать все необходимые COM-интерфейсы для моего типа, но это не будет хорошо работать со всей цепочкой инструментов MIDL, поскольку мой код частично сгенерирован из этого.

1 Ответ

0 голосов
/ 26 сентября 2018

C ++ / WinRT не ограничивает какие интерфейсы вы можете реализовать.Таким образом, вы можете реализовать эксклюзивные интерфейсы.Это может быть удобно для реализации класса WinRT или просто для тестирования или насмешек.Естественно, это не будет видно другим языкам или инструментам, таким как MIDL, поскольку это просто деталь реализации в C ++.

...