Предположим, у вас есть COM-интерфейс ICOMInterface
, который реализован с помощью coclasses Coclass1
и Coclass2
. Ни у одного из этих классов нет собственных интерфейсов (для простоты и для иллюстрации моей проблемы).
В C # вы можете создать экземпляр интерфейса COM из кокласса следующим образом:
ICOMInterface myComInterface = new Coclass1();
Теперь, как вы можете определить, был ли myComInterface
создан Coclass1
или Coclass2
?
Использование оператора "is", как следует, всегда возвращает true, и как таковое для этой цели бесполезно.
Debug.WriteLine(myComInterface is Coclass1) // writes "True"
Debug.WriteLine(myComInterface is Coclass2) // writes "True"
Это работало бы, если бы я тестировал интерфейсы, а не коклассы, но у этих коклассов нет интерфейсов, отличных от того, который они оба реализуют, ICOMInterface
.
Я надеюсь, что есть простой ответ на этот довольно общий сценарий, который я пропускаю, в противном случае я могу опубликовать более конкретные детали, если потребуется.
Спасибо за вашу помощь!