Разница между Инспектором и ИнспекторКлассом

Я смотрел на библиотеки VSTO, в основном для удовольствия, и я заметил, что есть что-то под названием Inspector так же как InspectorClass,

Какая разница, почему он там и как его использовать? (NB. Я не ищу ответ о том, как кодировать, используя эти классы, а скорее о том, что лежит в основе этого определенного архитектурного шаблона. Чисто академическое любопытство.)

1 ответ

Решение

InspectorClass это класс (конкретная реализация) Inspector COM-интерфейс (например, это COM-объект с метаданными + код). Inspector может быть создан непосредственно, даже если он существует исключительно как определение интерфейса (на самом деле он создается InspectorClass за кадром).

InspectorClass может быть создан, так как он представляет конкретный экземпляр класса, хотя в VSTO добавлена ​​поддержка для встраивания типов взаимодействия в.NET 4 - поддержка *Class Использование больше не используется и служит более или менее для обратной совместимости.

Все это говорит о том, что вы должны теперь использовать Inspector и не InspectorClass который может содержать исполняемый код. Из блогов MSDN:

... безопасно встраивать метаданные, но не все, что может потенциально содержать исполняемый код (типы классов содержат метаданные И код, в то время как интерфейсы содержат только метаданные)

Из этого утверждения вы можете сделать вывод, что InspectorClass содержит исполняемый код, а Inspector нет - это чисто интерфейс (метаданные). Это означает, что встраивание типов взаимодействия не позволяет поддерживать *Class Реализации.

Другие вопросы по тегам