### **속성/필드 주입 (Property/Field Injection)**
- **정의:** 의존성들은 속성이나 필드에도 주입될 수 있습니다. 이를 위해서는 의존성을 나타내는 각 속성 또는 필드에 `[Inject]` 속성을 붙여야 합니다.
**예시:**
C#
```
class ClassA
{
[Inject]
IServiceA serviceA { get; set; } // 속성 주입
[Inject]
IServiceB serviceB; // 필드 주입
public ClassA()
{
// 생성자는 비어 있을 수 있습니다.
}
}
```
**설명:**
- `ClassA`는 `IServiceA` 타입의 속성과 `IServiceB` 타입의 필드를 가집니다.
- 각각의 속성과 필드에 `[Inject]` 속성이 붙어 있어, VContainer가 이들을 의존성으로 인식하고 컨테이너에서 해당하는 인스턴스를 찾아 주입합니다.
- 이 예시에서는 생성자가 비어 있습니다. 이는 속성/필드 주입이 생성자 주입과 독립적으로 작동할 수 있음을 보여줍니다.
**메서드 주입과의 관계:**
- 문서에서는 "속성 또는 필드를 통한 주입은 메서드 주입에 유용한 대안입니다"라고 명시되어 있습니다.
- 이는 생성자 주입이 불가능한 `MonoBehaviour`와 같은 경우에, 메서드 주입과 함께 속성/필드 주입도 고려할 수 있는 유연한 옵션임을 시사합니다. 어떤 방식을 선택할지는 개인적인 선호도나 특정 설계 요구사항에 따라 달라질 수 있습니다.
### 요약
VContainer에서 `[Inject]` 속성을 사용하여 클래스의 public 또는 private 속성 및 필드에 의존성을 직접 주입하는 방법을 간략하게 설명합니다. 이는 생성자 주입의 대안으로 사용될 수 있으며, 특히 Unity의 `MonoBehaviour`와 같은 특정 제약이 있는 클래스에 유용합니다.
---
이전 : [[3.2 Method Injection]] | 다음 : [[3.4 Injecting into MonoBehaviours]]