かずきのBlog@hatena

日本マイクロソフトに勤めています。このブログは個人ブログなので、ここに書いている内容は個人的な意見で会社の公式見解ではない点にご注意ください。好きなものは XAML と C# 。苦手なものは型の無い言語です。

DIコンテナのUnityで使用されるコンストラクタを指定する

InjectionConstructorAttributeを使用します。指定しない場合はコンストラクタ引数の一番多いものが使われます。

例えば以下のようなケース。

public class Hoge
{
    public Hoge(Foo foo, Bar bar) { }
    public Hoge(Foo foo) { }
}

だと、Foo foo, Bar barのほうのコンストラクタが使われます。これをFoo fooのほうにしたかったら以下のようにします。

public class Hoge
{
    public Hoge(Foo foo, Bar bar) { }
    [InjectionConstructor]
    public Hoge(Foo foo) { }
}

ということで、良いUnityライフを。