생성자 주입 (Constructor Injection)
생성자가 호출될때 매개변수 값에 컨테이너에서 바인딩된 값이 주입된다.
public class Weapon
{
readonly private BulletFactory _bulletFactory;
readonly private Settings _settings;
public Weapon(BulletFactory bulletFactory, Settings settings)
{
_bulletFactory = bulletFactory;
_settings = settings;
}
}
필드 주입 (Field Injection)
[Inject] 속성을 표시한 필드는 생성자 호출 직후 컨테이너에서 바인딩된 값이 주입된다.
private, public 모두 가능하다.
public class Weapon
{
[Inject]
private BulletFactory _bulletFactory;
[Inject]
public Settings settings;
}
프라퍼티 주입 (Property Injection)
[Inject] 속성을 표시한 프라퍼티는 생성자 호출 직후 컨테이너에서 바인딩된 값이 주입된다. private, public setter 모두 가능하다.
public class Weapon
{
[Inject]
private BulletFactory _bulletFactory { get; set; }
[Inject]
public Settings Settings { get; private set; }
}
메소드 주입 (Method Injection)
[Inject] 속성을 표시한 메소드도 역시 컨테이너에서 바인딩된 값이 주입된다.
유니티에서 MonoBehaviour은 생성자를 사용할 수 없기 때문에 대신 메소드 주입을 사용한다.
public class Weapon
{
private BulletFactory _bulletFactory;
private Settings _settings;
[Inject]
public void Construct (BulletFactory bulletFactory, Settings settings)
{
_bulletFactory = bulletFactory;
_settings = settings;
}
}