イベント(デリゲート)をstd::functionに変換するラッパクラスを作ってみた。
template <typename TSender,typename TResult>
ref class typed_event_handler_wrapper
{
internal:
typedef std::function<void (TSender,TResult)> wrapped_method_type;
typed_event_handler_wrapper(wrapped_method_type wrapped_method)
: wrapped_method_(wrapped_method)
{
proxy_handler_ =
ref new Windows::Foundation::TypedEventHandler<TSender, TResult>
(this,&typed_event_handler_wrapper::proxy_handler);
}
void proxy_handler(TSender sender,TResult result)
{
wrapped_method_(sender,result);
}
Windows::Foundation::TypedEventHandler<TSender, TResult>^ get()
{
return proxy_handler_;
}
private:
wrapped_method_type wrapped_method_;
Windows::Foundation::TypedEventHandler<TSender, TResult>^ proxy_handler_;
};
これから実際に使ってみる。