Связывание с помощью Visual C# .NET для автоматизации приложений Microsoft Office (исходники)Источник: CodingClub
АннотацияПри автоматизации таких приложений, как приложения Microsoft Office, вызовы свойств и методов объектов приложений Microsoft Office должны быть определенным образом сопоставлены этим объектам. Процесс сопоставления вызовов свойств и методов объектам, реализующим эти свойства и методы, называется связыванием . В Visual C# существуют два типа связывания: раннее связывание и позднее связывание . Выбор типа связывания влияет на такие характеристики приложения, как производительность, гибкость и удобство сопровождения.
В данной статье рассматриваются и сравниваются раннее и позднее связывание в клиентах автоматизации, написанных на Visual C#, и приводятся примеры обоих типов связывания. Раннее связываниеС помощью раннего связывания Visual C# осуществляет привязку непосредственно к соответствующим методам и свойствам, используя сведения о типах для данного приложения Microsoft Office. При этом компилятор может проверить синтаксис и соответствие типов, правильность указания числа и типа параметров, передаваемых методу или свойству, и тип возвращаемого значения. Поскольку при выполнении приложения раннее связывание требует меньше времени для вызова свойств или методов, оно может работать быстрее, чем позднее. Однако разница в производительности, как правило, незначительна. Раннее связывание имеет недостаток, который может вызвать проблемы совместимости версий. Предположим, что в сервере автоматизации (например, в Microsoft Excel 2002) реализованы новый метод или свойство, недоступные в Microsoft Excel 2000, или внесены изменения в существующие метод или свойство. Это может изменить размещение объекта и привести к появлению ошибок в приложениях Visual C#, использующих для автоматизации приложения Microsoft Excel 2002 предоставляемые им сведения о типах. Для предотвращения подобных проблем рекомендуется при разработке и проверке клиента автоматизации использовать сведения о типах для самой ранней версии поддерживаемого приложения Microsoft Office. В следующем примере рассмотрено построение клиента автоматизации с использованием раннего связывания. Обратите внимание, что использование раннего связывания требует указания библиотеки типов для клиента автоматизации.
1. Запустите Microsoft Visual Studio.NET. В меню Файл выберите команду Создать, а затем выберите пункт Проект. Выберите из числа проектов Visual C# тип Приложение Windows. По умолчанию создается форма Form1. Примечание. Microsoft Office 2003 включает основные сборки взаимодействия (PIA). Microsoft Office XP не включает эти сборки, но их можно загрузить. Дополнительные сведения об основных сборках взаимодействия (PIA) для Microsoft Office XP содержатся в следующей статье Microsoft Knowledge Base: try range = objSheet.get_Range("A1", Missing.Value); range.set_Value(Missing.Value, "Hello, World!" ); //Return control of Excel to the user. MessageBox.Show( errorMessage, "Error" ); Позднее связываниеВ отличие от раннего связывания, позднее связывание сопоставляет вызовы свойств и методов соответствующим объектам в процессе выполнения программы. Для этого в требуемых объектах должен быть реализован специальный интерфейс COM: IDispatch. Метод IDispatch::GetIDsOfNames позволяет запрашивать объект о поддерживаемых методах и свойствах, а метод IDispatch::Invoke позволяет вызывать эти свойства и методы. Это дает возможность при использовании позднего связывания избежать некоторых зависимостей от версии, присущих раннему связыванию. Недостатком позднего связывания является то, что оно не позволяет проверять целостность кода автоматизации на этапе компиляции и не поддерживает возможности Intellisense, обеспечивающие правильность вызовов методов и свойств. Для использования позднего связывания Visual C# необходимо применить метод System.Type.InvokeMember. Этот метод вызывает методы IDispatch::GetIDsOfNames и IDispatch::Invoke для привязки к методам и свойствам сервера автоматизации.
1. Запустите Microsoft Visual Studio.NET. В меню Файл выберите команду Создать, а затем - пункт Проект. Выберите из числа проектов Visual C# тип Приложение Windows. По умолчанию создается форма Form1. try //Get the workbooks collection. //Add a new workbook. //Get the worksheets collection. //Get the first worksheet. //Get a range object that contains cell A1. //Write "Hello, World!" in cell A1. //Return control of Excel to the user. MessageBox.Show( errorMessage, "Error" ); |