Sdílet prostřednictvím


Úprava dědičnosti třídy RCustomRowset

Chcete-li přidat IRowsetLocate rozhraní do jednoduchého příkladu zprostředkovatele jen pro čtení, upravte dědičnost CCustomRowset. Zpočátku dědí CCustomRowset z CRowsetImpl. Musíte ho upravit tak, aby dědil z CRowsetBaseImpl.

Chcete-li to provést, vytvořte novou třídu , CCustomRowsetImplv custom RS.h:

////////////////////////////////////////////////////////////////////////
// CustomRS.h

template <class T, class Storage, class CreatorClass, class ArrayType = CAtlArray<Storage>>
class CMyRowsetImpl:
   public CRowsetImpl<T, Storage, CreatorClass, ArrayType, CSimpleRow, IRowsetLocateImpl< T, IRowsetLocate >>
{
...
};

Nyní upravte mapu rozhraní MODELU COM ve vlastnímRS.h následujícím způsobem:

BEGIN_COM_MAP(CMyRowsetImpl)
   COM_INTERFACE_ENTRY(IRowsetLocate)
   COM_INTERFACE_ENTRY_CHAIN(_RowsetBaseClass)
END_COM_MAP()

Tento kód vytvoří mapu rozhraní MODELU COM, která říká CMyRowsetImpl volání QueryInterface pro IRowset rozhraní i IRowsetLocate rozhraní. K získání všech implementací pro ostatní třídy sady řádků map propojí CMyRowsetImpl třídu zpět na CRowsetBaseImpl třídu definovanou šablonami OLE DB; mapa používá makro COM_INTERFACE_ENTRY_CHAIN, které říká šablonám OLE DB, aby v reakci na QueryInterface volání naskenují mapu CRowsetBaseImpl MODELU COM.

Nakonec odkaz CCustomRowset na úpravou CCustomRowset zdědit z CMyRowsetImplCMyRowsetBaseImpl , následujícím způsobem:

class CCustomRowset : public CMyRowsetImpl<CCustomRowset, CCustomWindowsFile, CCustomCommand>

CCustomRowset nyní může použít IRowsetLocate rozhraní při využití zbytku implementace třídy sady řádků.

Po dokončení můžete dynamicky určit sloupce vrácené příjemci.

Viz také

Rozšíření jednoduchého zprostředkovatele pouze pro čtení