Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.025 c
15-1150485086
X9
2006-06-16 23:11
2006.07.16
Гигабитная сеть


15-1150219382
dimodim-Furyz
2006-06-13 21:23
2006.07.16
Web-radio


15-1150612858
Michael5
2006-06-18 10:40
2006.07.16
Хочу поучаствовать в каком-нибудь проекте!


4-1144417458
Yuri Btr
2006-04-07 17:44
2006.07.16
RichEdit v2+


15-1150282525
dexis
2006-06-14 14:55
2006.07.16
Что-та типа splitterа, раскрывающий/скрывающий панель оним кликом




   Наверх