Как определить с какого интерфейса вызван метод класса, если он имеет несколько интерфейсов, которые содержат одинаковые сигнатуры методов? Есть ли решение лучше, чем делать обертку для
интерфейса с переопределением методов (или это вовсе не решение)
interface IFace1 : public IUnknown
{
long Method()=0;
};
interface IFace2 : public IUnknown
{
long Method()=0;
};
class ATL_NO_VTABLE TFACEImpl :
public CComObjectRootEx<CComMultiThreadModel>,
public CComCoClass<TFACEImpl, &CLSID_FACE>,
public IBase,
DUALINTERFACE_IMPL(Base, IFace1),
DUALINTERFACE_IMPL(Base, IFace2)
{
public:
...
BEGIN_COM_MAP(TR2MImpl)
COM_INTERFACE_ENTRY(IFace1)
DUALINTERFACE_ENTRY(IFace2)
END_COM_MAP()
STDMETHOD Method() // Реализация общая для обоих интерфейсов, а хотелось бы разделить
{
}
};