ISimpleIocインターフェイス（MVVM Light Toolkit リファレンス）

# ISimpleIoc
## 概要

```csharp
public interface ISimpleIoc
```

- シンプルなIOC（Inversion of Control: [制御の反転](https://ja.wikipedia.org/wiki/%E5%88%B6%E5%BE%A1%E3%81%AE%E5%8F%8D%E8%BB%A2 "Wikipedia")）コンテナーのインターフェイス。

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

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


## メソッド
### ContainsCreated&lt;TClass&gt;
<details><summary>ContainsCreated&lt;TClass&gt;</summary><div>

```csharp
public bool ContainsCreated<TClass>()
public bool ContainsCreated<TClass>(string key)
```

##### 概要
- 引数`key`を指定した場合、その`key`を付けて生成した`TClass`のインスタンスが、コンテナー内にあるかを戻す。
- 引数を指定しなかった場合、キーを付けて生成したインスタンスを含め、`TClass`のインスタンスが、コンテナー内にあるかを戻す。

##### 戻り値
- コンテナー内に`TClass`のインスタンスがある場合、`true`を戻す。
</div></details>

### IsRegistered&lt;T&gt;
<details><summary>IsRegistered&lt;T&gt;</summary><div>

```csharp
public bool IsRegistered<T>()
public bool IsRegistered<T>(string key)
```

##### 概要
- 引数`key`を指定した場合、その`key`を付けて`T`がコンテナーに登録されているかを戻す。
- 引数を指定しなかった場合、`T`がコンテナーに登録されているかを戻す。

##### 戻り値
- `T`がコンテナーに登録されている場合、`true`を戻す。
</div></details>


### Register&lt;TClass&gt;<br> Register&lt;TInterface, TClass&gt;
<details><summary>Register&lt;TClass&gt;, Register&lt;TInterface, TClass&gt;</summary><div>

```csharp
public void Register<TClass>()
public void Register<TClass>(bool createInstanceImmediately)
public void Register<TClass>(System.Func<TClass> factory)
            where TClass : class
public void Register<TClass>(System.Func<TClass> factory, bool createInstanceImmediately)
            where TClass : class
public void Register<TClass>(System.Func<TClass> factory, string key)
            where TClass : class
public void Register<TClass>(System.Func<TClass> factory, string key, bool createInstanceImmediately)
            where TClass : class
public void Register<TInterface, TClass>()
            where TInterface : class
            where TClass : class, TInterface
public void Register<TInterface, TClass>(bool createInstanceImmediately)
     	    where TInterface : class
            where TClass : class, TInterface
```

##### 概要
- コンテナーに`TClass`を登録する。
- 型引数`TInterface`を指定した場合、インターフェイス`TInterface`を実装するクラスとして`TClass`をコンテナーに登録する。<br>（`TInterface`を指定して`GetInstance`メソッド等を実行した場合、`TClass`のインスタンスが得られる）
- 引数`createInstanceImmediately`が`true`ならば、直ちにインスタンスを生成する。<br>（`false`を指定した、または、引数`createInstanceImmediately`を指定しなかった場合、`GetInstance`メソッド等を実行した時点で、インスタンスを生成する）
- 引数`factory`を指定した場合、インスタンスの生成に`factory`を使う。
- 引数`key`は、`TClass`または`TInterface`とともにコンテナーに登録される。`GetInstance`メソッド等でインスタンスを区別するキーに用いる。
</div></details>


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

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

##### 概要
- コンテナー内の全ての登録を削除する。
</div></details>


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

```csharp
public void Unregister<TClass>()
public void Unregister<TClass>(string key)
public void Unregister<TClass>(TClass instance)
```

##### 概要
- 型引数`TClass`で指定したクラスの登録を、コンテナーから削除する。
- 引数`key`を指定した場合、`key`を付けた`TClass`の登録のみを、コンテナーから削除する。`TClass`の他の登録があれば、それらはコンテナーから削除されない。
- 引数`instance`を指定した場合、そのインスタンスのみを、コンテナーから削除する。`TClass`の登録は、コンテナーから削除されない。
</div></details>


## 参照
- [目次](https://qiita.com/h084/items/c5355fa734936c56ca50/)
- [SimpleIoc](https://qiita.com/h084/items/0e3697dd65c26401891f)