### **메서드 주입 (Method Injection)**
- **언제 사용하는가:** 생성자를 통해 의존성을 주입할 수 없는 타입에 의존성을 주입해야 할 때 사용합니다.
- **주요 사용처:** `MonoBehaviour`에 가장 유용하게 사용되지만, Unity Test Framework 내의 테스트 케이스를 포함하여 모든 클래스에서 사용 가능합니다.
**예시:**
C#
```
public class SomeBehaviour : MonoBehaviour
{
float speed;
[Inject] // 이 속성을 메서드에 추가하여 VContainer가 주입할 메서드를 식별합니다.
public void Construct (GameSettings settings)
{
speed = settings.speed;
}
}
```
**설명:**
- `SomeBehaviour`는 `MonoBehaviour`를 상속받으므로 생성자 주입을 직접 사용할 수 없습니다.
- `[Inject]` 속성이 추가된 `Construct` 메서드를 통해 `GameSettings` 인스턴스를 주입받습니다.
- 주입된 `GameSettings`에서 `speed` 값을 가져와 `SomeBehaviour`의 `speed` 필드에 할당합니다.
**특징:**
- **메서드 이름과 접근 제어자:** `[Inject]` 속성이 붙은 메서드는 **어떤 이름이든 가질 수 있으며, 어떤 접근 제어자(public, private, protected 등)도 허용**됩니다. (단, 3.1 Constructor Injection 문서의 Caution에 따르면 `internal` 미만의 접근 레벨은 Source Generator에서 지원되지 않을 수 있으니 주의가 필요합니다.)
- **MonoBehaviour와 GameObject 관리:** MonoBehaviour와 GameObject에 대한 더 자세한 정보는 "Injecting into MonoBehaviours" 섹션을 참조하라고 안내합니다. (이는 3.4 MonoBehaviour.pdf 문서에 해당합니다.)
### 요약
생성자 주입이 불가능한 경우 (특히 MonoBehaviour) 메서드 주입이 효과적인 대안임을 강조하며, `[Inject]` 속성을 사용하여 의존성을 주입하는 간단한 코드 예시를 제공합니다. 또한 주입 메서드의 유연성과 MonoBehaviour 관련 추가 정보에 대한 참조를 제공합니다.
---
이전 : [[3.1 Constructor Injection]] | 다음 : [[3.3 Property Field Injection]]