Freigeben über


Ändern der Vererbung von RCustomRowset

Um die IRowsetLocate Schnittstelle zum einfachen schreibgeschützten Anbieterbeispiel hinzuzufügen, ändern Sie die Vererbung von CCustomRowset. Erbt zunächst CCustomRowset von CRowsetImpl. Sie müssen sie ändern, um sie zu erben.CRowsetBaseImpl

Erstellen Sie dazu eine neue Klasse in CCustomRowsetImplcustomRS.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 >>
{
...
};

Bearbeiten Sie nun die COM-Schnittstellenzuordnung in CustomRS.h wie folgt:

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

Dieser Code erstellt eine COM-Schnittstellenzuordnung, die angibtCMyRowsetImpl, sowohl für die als IRowsetLocate auch für die IRowset Schnittstellen aufzurufenQueryInterface. Um alle Implementierungen für die anderen Rowsetklassen abzurufen, verknüpft die Zuordnung die CMyRowsetImpl Klasse zurück mit der klasse, die CRowsetBaseImpl von den OLE DB-Vorlagen definiert wurde. Die Zuordnung verwendet das COM_INTERFACE_ENTRY_CHAIN Makro, das OLE DB-Vorlagen angibt, die COM-Zuordnung CRowsetBaseImpl als Reaktion auf einen QueryInterface Aufruf zu scannen.

Abschließend können Sie eine Verknüpfung herstellen CCustomRowset CMyRowsetBaseImpl , indem CCustomRowset Sie diese ändern, um von CMyRowsetImpl, wie folgt, zu erben:

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

CCustomRowset kann jetzt die IRowsetLocate Schnittstelle verwenden, während die restliche Implementierung für die Rowset-Klasse genutzt wird.

Wenn dies geschieht, können Sie spalten dynamisch bestimmen, die an den Consumer zurückgegeben werden.

Siehe auch

Erweitern des einfachen schreibgeschützten Anbieters