[Zenject] 주입 (Injection)

Dev W·2022년 12월 14일
0

zenject

목록 보기
2/7

젠젝트에는 4가지 주입 패턴(Injection Patterns)이 존재한다.

  • 생성자 주입 (Constructor Injection)
  • 필드 주입 (Field Injection)
  • 프라퍼티 주입 (Property Injection)
  • 메소드 주입 (Method Injection)

생성자 주입 (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;
    }
}

0개의 댓글