Наша объектная модель содержит класс под названием Unit и набор этих названных Units (которые хранятся в словаре). Эти объекты имеют уникальные имена и ключи (они изначально пришли из SQL дб, что насильственного это), так что я добавил:Рабочие листы и рабочие листы (1), не могу ли я сделать это из .net-взаимодействия?
Public Units(N as String) As Unit ...
Public Units(K as Integer) As Unit...
, который возвращает объект единицы из коллекции единиц.
В Excel VBA можно ссылаться на большинство объектов, используя аналогичные методы; Worksheets(1)
возвращает первый лист, а Worksheets("Bob")
возвращает именованный лист. Но у них есть один дополнительный метод: Worksheets
, который возвращает всю коллекцию. Это как если бы у них есть этот метод ...
Public Worksheets() As List(Of Worksheet)
Но вы не можете использовать список в Interop (правильно?), так что это больше похоже ...
Public Worksheets() As ArrayList
Так как бы я сделать тот же базовый API в .net с interop? То есть, есть три метода ...
Public Units(N as String) As Unit ...
Public Units(K as Integer) As Unit...
Public Units() As ArrayList...
Как я понимаю это только первый метод заданного имени экспортируемого (это правильно?). Итак, как это делает Excel, и могу ли я подделать это в .net?
Итак, если я правильно разбор этого, вызов 'Таблицах ("Bob")' действительно вызов 'Worksheets.Item ("Bob")', и, кроме того, метод ' «Элемент» берет вариант, определяет, что было передано, и затем на основе этого основывается поиск. Правильно? Итак, что же вызывает прямолинейный «Рабочий лист»? Это вызов метода в классе? Это сборник на каком-то другом объекте, вроде, я не знаю, 'Workbook'? Когда я говорю «Рабочие книги», кого я зову? –
@MauryMarkowitz Да, это правильно по методу 'Item'. Когда вы вызываете «Worksheets», вы получаете доступ к свойству «Worksheets» класса «Application», глобальному одиночному классу, представляющему сам экземпляр Excel. Это свойство называется «Worksheets» (просто имя свойства) и возвращает объект типа «Worksheets» (теперь это имя типа). – GSerg
* Вы ответили, я не обновил * –