Udostępnij za pośrednictwem


Wiele interfejsów podwójne

Chcesz połączyć zalety podwójnym interfejsem (czyli elastyczność zarówno vtable i późne wiązanie, dzięki czemu klasy dostępne języki skryptów, jak również C++) z technik wielokrotne dziedziczenie.

Chociaż można udostępnić wiele interfejsów podwójne na pojedynczy obiekt COM, to nie jest zalecane.Jeśli istnieje wiele interfejsów podwójne, musi istnieć tylko jeden IDispatch interfejsu narażone.Technik dostępnych do zapewnienia, że dotyczy to wykonania kary, jak utratę funkcji lub złożoność kodu zwiększone.Developer, biorąc pod uwagę podejście należy starannie zważyć zalety i wady.

Uwidacznianie jednego interfejsu IDispatch

Można udostępnić wiele interfejsów podwójne na pojedynczy obiekt wynikające z dwóch lub więcej specjalności z IDispatchImpl.Jednakże jeśli zezwolić klientom na kwerendy o IDispatch interfejsu, należy użyć COM_INTERFACE_ENTRY2 makra (lub COM_INTERFACE_ENTRY_IID) aby określić, które klasa podstawowa dla wykonania IDispatch.

COM_INTERFACE_ENTRY2(IDispatch, IMyDualInterface)

Ponieważ tylko jeden IDispatch interfejsu jest narażony, klientów, którzy mają dostęp tylko przez obiekty IDispatch interfejsu nie można uzyskać dostęp do metod lub właściwości innego interfejsu.

Łączenie wielu interfejsów Dual w jedną implementację interfejsu IDispatch

ATL nie zapewnia wszelkie wsparcie łączenie wielu interfejsów dual w realizacji jednego IDispatch.Istnieją jednak kilka znanych podejścia ręcznie interfejsów, jak tworzenie szablonu klasa, która zawiera Unii odrębne IDispatch interfejsów tworzenia nowego obiektu do wykonywania QueryInterface funkcji lub tworzenie przy użyciu opartych na parametr typeinfo wykonania obiektów zagnieżdżonych IDispatch interfejsu.

Metody te występują problemy z potencjalnych kolizji nazw, a także złożoność kodu i łatwość konserwacji.Nie zaleca się utworzenie wielu interfejsów podwójne.

Zobacz też

Koncepcje

Dwa interfejsy i ATL