Книга: C# 4.0: полное руководство
Возможность взаимодействия с моделью СОМ
Возможность взаимодействия с моделью СОМ
В версии C# 4.0 внедрены средства, упрощающие возможность взаимодействия с неуправляемым кодом, определяемым моделью компонентных объектов (СОМ) и применяемым, в частности, в COM-объекте Office Automation. Некоторые из этих средств, в том числе тип dynamic
, именованные и необязательные свойства, пригодны для применения помимо возможности взаимодействия с моделью СОМ. Тема модели СОМ вообще и COM-объекта Office Automation в частности весьма обширна, а порой и довольно сложна, чтобы обсуждать ее в этой книге. Поэтому возможность взаимодействия с моделью СОМ выходит за рамки данной книги.
Тем не менее две особенности, имеющие отношение к возможности взаимодействия с моделью СОМ, заслуживают краткого рассмотрения в этом разделе. Первая из них состоит в применении индексированных свойств, а вторая — в возможности передавать аргументы значения тем COM-методам, которым требуется ссылка.
Как вам должно быть уже известно, в C# свойство обычно связывается только с одним значением с помощью одного из аксессоров get
или set
. Но совсем иначе дело обстоит со свойствами модели СОМ. Поэтому, начиная с версии C# 4.0, в качестве выхода из этого затруднительного положения во время работы с COM-объектом появилась возможность пользоваться индексированным свойством для доступа к COM-свойству, имеющему несколько параметров. С этой целью имя свойства индексируется, почти так же, как это делается с помощью индексатора. Допустим, что имеется объект myXLApp
, который относится к типу Microsoft.Office.Interop.Execl.Application
.
В прошлом для установки строкового значения "ОК" в ячейках С1-СЗ электронной таблицы Excel можно было бы воспользоваться оператором, аналогичным следующему.
myXLapp.get_Range("C1", "СЗ").set_Value(Type.Missing, "OK");
В этой строке кода интервал ячеек электронной таблицы получается при вызове метода get_Range()
, для чего достаточно указать начало и конец интервала. А значения задаются при вызове метода set_Value()
, для чего достаточно указать тип (что не обязательно) и конкретное значение. В этих методах используются свойства Range
и Value
, поскольку у обоих свойств имеются два параметра. Поэтому в прошлом к ним нельзя было обращаться как к свойствам, но приходилось пользоваться упомянутыми выше методами. Кроме того, аргумент Type.Missing
служил в качестве обычного заполнителя, который передавался для указания на тип, используемый по умолчанию. Но, начиная с версии C# 4.0, появилась возможно переписать приведенный выше оператор, приведя его к следующей более удобной форме.
myXLapp.Range["Cl", "СЗ"].Value = "OK";
В этом случае значения интервала ячеек электронной таблицы передаются с использованием синтаксиса индексаторов, а заполнитель Type.Missing
уже не нужен, поскольку данный параметр теперь задается по умолчанию.
Как правило, при определении в методе параметра ref
приходится передавать ссылку на этот параметр. Но, работая с моделью СОМ, можно передавать параметру ref
значение, не заключая его предварительно в оболочку объекта. Дело в том, что компилятор будет автоматически создавать временный аргумент, который уже заключен в оболочку объекта, и поэтому указывать параметр ref в списке аргументов уже не нужно.
- Небезопасный код
- Обнуляемые типы
- Основы применения обнуляемых типов
- Применение обнуляемых объектов в выражениях
- Оператор ??
- Обнуляемые объекты, операторы отношения и логические операторы
- Частичные типы
- Частичные методы
- Создание объектов динамического типа
- Возможность взаимодействия с моделью СОМ
- Дружественные сборки
- Разные ключевые слова
- 12. Лекция: Создание приложений с графическим интерфейсом пользователя.
- 4. Стадии бизнес-процесса взаимодействия с клиентами
- 4.9 Обеспечение взаимодействия устройств Fibre Channel
- Кризис – это возможность. 10 стратегий, которые позволят вам процветать в эпоху перемен Скотт Стейнберг
- Есть ли возможность установить пароль на папку или файл?
- Я нашел интересный сайт, но со сложным адресом. Как его запомнить?
- Материнская плата имеет возможность организации RAID-массивов из двух SATA-дисков. Можно ли подключить к ней только один...
- Во время загрузки появляется окно с запросом пароля, но раскладка используется русская, а у меня пароль на английском. К...
- На старом компьютере нужно переустановить систему, но при этом сохранить драйверы. Есть возможность «вырвать» их из сист...
- Существует ли возможность скопировать текст из консоли?
- Подружитесь с почтовым сервисом!
- Управление процессом снизу