我有一些相互交互的原生对象。
现在,我将其中一些对象包装到托管类中。但是在某些情况下,我必须检索本机包装对象。
例如,采用以下对象:
这是一个创建 Sessions 对象的本地类。
private class SessionFactory : public ISessionFactory {
public:
~SessionFactory() {};
SessionFactory(MessageEventHandler* handler) : m_handler(handler) {};
/// Creates an instance of a Session,
/// using the given message handler.
inline Session* createSession(const IMessageDispatcher* dispatcher) {
Session* s = new Session(dispatcher);
s->AddMsgHandler( m_handler );
return s;
};
private:
MessageEventHandler* m_handler;
};
这是一个包装原生 MessageEventHandler 对象的托管类。
public ref class NetMessageEventHandler {
public:
NetMessageEventHandler() {
m_NativeHandlerPtr = new MessageEventHandler();
}
const MessageEventHandler* GetNativeObject() const;
private:
MessageEventHandler* m_NativeHandlerPtr;
};
现在,在下面的 NetMessageDispatcher 中,我必须与前面的每一个进行交互:
public ref class NetMessageDispatcher {
public:
NetMessageDispatcher(MessageEventHandler^ handler) {
m_Dispatcher = new MessageDispatcher( new SessionFactory(handler->GetNativeObject()) );
}
private:
MessageDispatcher* m_Dispatcher;
}
这种方法是正确的还是有其他一些最佳实践?