Использование позднего связывания при использовании нескольких версий Outlook
Управляемые надстройки Outlook, использующие основную сборку взаимодействия (PIA) Outlook, компилируются сведениями о типах, которые предоставляет PIA. Это раннее связывание сведений о типах для методов и свойств позволяет компилятору выполнять проверки типов и синтаксиса, чтобы гарантировать передачу в метод или свойство правильного количества и правильных типов параметров, а также принадлежность возвращаемого значения к ожидаемому типу.
Но к недостаткам раннего связывания относится появление несовместимости версий, если для метода или свойства, вызываемых надстройкой, в более ранней версии используется другое объявление. Например, добавление новых методов и свойств или изменение существующих членов объекта может изменить двоичную структуру объекта и вызвать проблемы в управляемой надстройке, использующей более новые сведения для автоматизации ранней версии Outlook.
В подобных случаях при позднем связывании привязка вызовов свойств и методов к объектам выполняется во время выполнения. Позднее связывание помогает избежать сложностей, вызванных типами, отличающимися в различных версиях Outlook, и особенно полезно при написании надстроек, опирающихся на несколько различных версий Outlook.
Позднее связывание включает вызов надстройкой интерфейса IDispatch, реализованного Outlook. Чтобы использовать позднюю привязку в Visual C#, используйте метод System.Type.InvokeMember . Этот метод вызывает IDispatch::GetIDsOfNames и IDispatch::Invoke, чтобы выполнить связывание с методами и свойствами Outlook. Метод IDispatch::GetIDsOfNames позволяет Visual C# опрашивать объект о поддерживаемых методах и свойствах, а метод IDispatch::Invoke позволяет Visual C# вызывать эти методы и свойства.