DelegateDispose
class
名前空間:SilCilSystem.Variables
継承:
- System.IDisposable
- SilCilSystem.IPooledObject
Assembly:SilCilSystem
Dispose
メソッドで呼ばれる処理を指定できるIDisposable
です。
メンバ一覧
メソッド
member | description |
---|---|
void Dispose() | 登録したメソッドを呼び出す。 |
static IDisposable Create(Action action) | 新しいDelegateDisposeを生成する |
使用例
イベントオブジェクトの登録解除に使用しています。
private event Action m_event;
public IDisposable Subscribe(Action action)
{
// イベントを登録.
m_event += action;
// 解除用のIDisposableクラスを返す.
return DelegateDispose.Create(() => m_event -= action);
}
実装
指定されたメソッドを変数として保持してDispose
で呼び出しています。
private Action m_delegate;
public void Dispose()
{
m_delegate?.Invoke();
m_delegate = null;
}
m_delegate
への代入はstatic
メソッドのCreate
で行っています。
public static IDisposable Create(Action action)
{
var instance = m_pool.GetInstance();
instance.m_delegate = action;
return instance;
}
new
が極力呼ばれないようにするためにオブジェクトプールを行っています。