Разница между Инспектором и ИнспекторКлассом
Я смотрел на библиотеки VSTO, в основном для удовольствия, и я заметил, что есть что-то под названием Inspector
так же как InspectorClass
,
Какая разница, почему он там и как его использовать? (NB. Я не ищу ответ о том, как кодировать, используя эти классы, а скорее о том, что лежит в основе этого определенного архитектурного шаблона. Чисто академическое любопытство.)
1 ответ
InspectorClass
это класс (конкретная реализация) Inspector
COM-интерфейс (например, это COM-объект с метаданными + код). Inspector
может быть создан непосредственно, даже если он существует исключительно как определение интерфейса (на самом деле он создается InspectorClass
за кадром).
InspectorClass
может быть создан, так как он представляет конкретный экземпляр класса, хотя в VSTO добавлена поддержка для встраивания типов взаимодействия в.NET 4 - поддержка *Class
Использование больше не используется и служит более или менее для обратной совместимости.
Все это говорит о том, что вы должны теперь использовать Inspector
и не InspectorClass
который может содержать исполняемый код. Из блогов MSDN:
... безопасно встраивать метаданные, но не все, что может потенциально содержать исполняемый код (типы классов содержат метаданные И код, в то время как интерфейсы содержат только метаданные)
Из этого утверждения вы можете сделать вывод, что InspectorClass
содержит исполняемый код, а Inspector
нет - это чисто интерфейс (метаданные). Это означает, что встраивание типов взаимодействия не позволяет поддерживать *Class
Реализации.