Messengerクラス（MVVM Light Toolkit リファレンス）

# Messenger
## 概要

```csharp
public class Messenger : IMessenger
```

- `IMessenger`インターフェイスを実装したメッセンジャーのクラス。

##### 名前空間
- `GalaSoft.MvvmLight.Messaging`

#### アセンブリ
- GalaSoft.MvvmLight


## メソッド
### Cleanup
<details><summary>Cleanup</summary><div>

```csharp
public void Cleanup()
```

##### 概要
- メッセージの受領者リストから、無効な（ガベージコレクションされた）インスタンスを取り除く。同期的に実行する。
- このメソッドよりも、`RequestCleanup`メソッドを使うべきである。
</div></details>


### OverrideDefault
<details><summary>OverrideDefault</summary><div>

```csharp
public static void OverrideDefault(IMessenger newMessenger)
```

##### 概要
- `Messenger.Default`が戻すインスタンスを`newMessenger`に変更する。
- 単体テストなどの場合に使うとよい。
</div></details>


### Register&lt;TMessage&gt;
<details><summary>Register&lt;TMessage&gt;</summary><div>

```csharp
public virtual void Register<TMessage>(object recipient, System.Action<TMessage> action, bool keepTargetAlive = false)
public virtual void Register<TMessage>(object recipient, object token, System.Action<TMessage> action, bool keepTargetAlive = false)
public virtual void Register<TMessage>(object recipient, bool receiveDerivedMessagesToo, System.Action<TMessage> action, bool keepTargetAlive = false)
public virtual void Register<TMessage>(object recipient, object token, bool receiveDerivedMessagesToo, System.Action<TMessage> action, bool keepTargetAlive = false)
```

##### 概要
- `TMessage`型のメッセージの受領者として、`recipent`を登録する。
- メッセージを受領したとき、`action`を実行する。`action`がクロージャーの場合、`keepTargetAlive`を`true`にすること。
- `token`を指定した場合、メッセージの受領者は、同じ`token`を指定したメッセージのみを受領する。
- `receiveDerivedMessagesToo`が`true`の場合、メッセージの受領者は、`TMessage`型の派生クラスのメッセージも受領する。`TMessage`型がインターフェイスの場合、`TMessage`を実装したクラスのメッセージを受領する。
</div></details>


### RequestCleanup
<details><summary>RequestCleanup</summary><div>

```csharp
public void RequestCleanup()
```

##### 概要
- メッセージの受領者リストから、無効な（ガベージコレクションされた）インスタンスを取り除く。アプリケーションがアイドル時に、非同期に実行する。
- `Cleanup`メソッドではなく、このメソッドを使うべきである。
</div></details>


### Reset
<details><summary>Reset</summary><div>

```csharp
public static void Reset()
```

##### 概要
- `Messenger.Default`が戻すインスタンスを、新しく作り直す。
</div></details>


### ResetAll
<details><summary>ResetAll</summary><div>

```csharp
public void ResetAll()
```

##### 概要
- `Messenger.Default`が戻すインスタンスを、新しく作り直す。
- `Reset`と同じ働きをするメソッドの、インスタンス・メンバー版。
</div></details>


### Send&lt;TMessage&gt;, Send&lt;TMessage, TTarget&gt;
<details><summary>Send&lt;TMessage&gt;, Send&lt;TMessage, TTarget&gt;</summary><div>

```csharp
public virtual void Send<TMessage>(TMessage message)
public virtual void Send<TMessage>(TMessage message, object token)
public virtual void Send<TMessage, TTarget>(TMessage message)
```

##### 概要
- `TMessage`型のメッセージを送る。
- `token`を指定した場合、同じ`token`を指定して登録した受領者のみ、このメッセージを受領する。
- `TTarget`を指定した場合、受領者の型が`TTarget`の場合のみ、このメッセージを受領する。
</div></details>


### Unregister, Unregister&lt;TMessage&gt;
<details><summary>Unregister, Unregister&lt;TMessage&gt;</summary><div>

```csharp
public virtual void Unregister(object recipient)
public virtual void Unregister<TMessage>(object recipient)
public virtual void Unregister<TMessage>(object recipient, object token)
public virtual void Unregister<TMessage>(object recipient, System.Action<TMessage> action)
public virtual void Unregister<TMessage>(object recipient, object token, System.Action<TMessage> action)
```

##### 概要
- `recipient`を、メッセージの受領者としての登録を解除する。
- `TMessage`を指定した場合、`TMessage`型のメッセージの受領についてのみ、登録を解除する。
- `token`を指定した場合、同じ`token`を指定したメッセージの受領についてのみ、登録を解除する。
- `action`を指定した場合、同じ`action`を指定したメッセージの受領についてのみ、登録を解除する。
</div></details>


## プロパティ
### Default
<details><summary>Default</summary><div>

```csharp
public static IMessenger Default { get; }
```

##### 概要
- デフォルトのメッセンジャーのインスタンスを戻す。
</div></details>


## 参照
- [目次](https://qiita.com/h084/items/c5355fa734936c56ca50/)
- [ViewModelBase](https://qiita.com/h084/items/232e808e4687fede2e78)
- [IMessenger](https://qiita.com/h084/items/e879feae2f3f1ca3363b)