У меня возникла небольшая проблема (снова). Скажем, у меня есть объект Buttonpad:
альтернативный текст http://img530.imageshack.us/img530/7513/buttonpad.jpg
теперь этот объект является объектом-оболочкой над объектом в объекте com. На данный момент у него есть метод с именем CreateInto (IComObject) . Теперь создайте новую кнопочную панель в объекте Com.
Вы делаете:
ButtonPad pad = new ButtonPad();
pad.Title = "Hello";
// Set some more properties.
pad.CreateInto(Cominstance);
Метод createinfo выполнит правильные команды для создания кнопочной панели в объекте com. После того, как он был создан, любые вызовы против него направлены на изменение базового объекта так:
pad.Title = "New title";
вызовет объект com для установки заголовка, а также установит внутреннюю переменную заголовка.
По сути, любые вызовы до метода CreateInfo влияют только на объект .NET, после чего возникает побочный эффект вызова объекта com. Я не очень хорош в диаграммах последовательности, но вот моя попытка объяснить, что происходит:
альтернативный текст http://img196.imageshack.us/img196/5885/seqa.jpg
Мне это не нравится, мне кажется, что я лгу пользователю о том, что делает кнопочная панель.
Я собирался иметь объект с именем WrappedButtonPad, который возвращается из CreateInto, и пользователь мог сделать вызовы для этого, чтобы внести изменения в объект Com, но я чувствую, что есть два объекта, которые почти делают одно и то же, но отличаются только на имена могут быть еще хуже.
Это действительные образцы или я прав, что беспокоюсь?
Как еще вы можете обработать объект, который можно создать, и запросить ком-объект?