Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.16;
Скачать: CL | DM;

Вниз

Нужно ли создавать новый интерфейс?   Найти похожие ветки 

 
S@shka ©   (2005-07-22 14:35) [0]

Есть интерфейс, который используется. Я  хочу добавить в него новые методы (исключительно добавить). Нужнно ли для этого создавать новый интефейс типа MyInterface2 или же можно добавить методы в реализации старого интер-са.


 
just_me   (2005-07-22 15:54) [1]

Создать новый.
Цитата мз MSDN:
Interfaces are immutable. COM interfaces are never versioned, which means that version conflicts between new and old components are avoided. A new version of an interface, created by adding more functions or changing semantics, is an entirely new interface and is assigned a new unique identifier.


 
isasa ©   (2005-07-23 12:25) [2]

Ну а почему не попробовать.
Открыть проект ATL (если она написана на D.
View -> View type library.
Выбираем нужный интерф. и вперед.


 
S@shka ©   (2005-07-23 17:54) [3]

Можно то можно, а было интересно - как это делать правильно.
Конечно все бы заработало - но есно внесло бы неразбериху.
Спасибо за цитату из MSDN )


 
isasa ©   (2005-07-23 23:36) [4]

Если вспомнить первоначальную идею о модульности и возможности развития, то любое добавление методов в уже существующий интерф. - правильно.
Кроме того, существует механизм использования разных версий интерфейса <интерф>MajorVersion, <интерф>MinorVersion.
Вызов CreateOleObject("FlowSrvr.IProperty") и CreateOleObject("FlowSrvr.IProperty.1") - могут вернуть разные интерф.


 
Набережных С   (2005-07-25 19:58) [5]


> S@shka ©

Один из главных постулатов СОМ - единожды опубликованный интерфейс не может быть изменен ни в коем случае. Если нужно внести изменения/дополнения, то необходимо выпустить новую версию интерфейса, с новым GUID. Нсоблюдение данного правила приведет к тому, что клиентский код не сможет работать с двумя объектами, реализующими разные версии якобы одного и того же интерфейса. Это очевидно.

> isasa ©   (23.07.05 23:36) [4]

Не следует путать понятия интерфейса и его реализации.
Вызов CreateOleObject("FlowSrvr.IProperty") и CreateOleObject("FlowSrvr.IProperty.1") МОГУТ вернуть ВОЗМОЖНО разные,  а может и одинаковые интерфейсы РАЗНЫХ ОБЪЕКТОВ. Символьное имя интерфейса необязательно и не требует строгой уникальности. Интерфейс идентифицируется только его GUID, а вот он уже не может быть одинаковым у двух семантически разных интерфейсов. Строка-параметр в CreateOleObject идентифицирует как раз таки объект, но никак не интерфейс, эта функция всегда возвращает и IDispatch.



Страницы: 1 вся ветка

Текущий архив: 2006.07.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.04 c
9-1131701802
2Wish
2005-11-11 12:36
2006.07.16
Как убрать спрайт


1-1149652617
dwar
2006-06-07 07:56
2006.07.16
Ole обьект в DLL


3-1147335203
Stanislav
2006-05-11 12:13
2006.07.16
Кодировка в dbf


2-1151509239
olevacho_
2006-06-28 19:40
2006.07.16
Защита привязкой к компу


6-1141869741
AleKo
2006-03-09 05:02
2006.07.16
idPOP3