メインコンテンツまでスキップ

メソッドインジェクション

コンストラクタが利用できない場合は、メソッドインジェクションが使用できます。

Unityでの主な利用例は MonoBehaviour です。

public class SomeBehaviour : MonoBehaviour
{
float speed;

[Inject]
public void Construct(GameSettings settings)
{
speed = settings.speed;
}
}

MonoBehaviourGameObject の管理について詳しくは MonoBehaviourへのインジェクション を参照して下さい。

Method Injection with Keys

同じインターフェイスや型の複数の実装が異なるキーで登録されている場合、メソッドパラメーターの Key 属性を使って、注入する実装を指定することができます:

public class WeaponController : MonoBehaviour
{
private IWeapon _primaryWeapon;
private IWeapon _secondaryWeapon;

[Inject]
public void Initialize(
[Key(WeaponType.Primary)] IWeapon primaryWeapon,
[Key(WeaponType.Secondary)] IWeapon secondaryWeapon)
{
_primaryWeapon = primaryWeapon;
_secondaryWeapon = secondaryWeapon;
}
}

The Key attribute also supports other key types like strings and integers:

public class GameController : MonoBehaviour
{
private IEnemy _enemy;
private ILevel _level;

[Inject]
public void Setup(
[Key("goblin")] IEnemy enemy,
[Key(1)] ILevel level)
{
_enemy = enemy;
_level = level;
}
}
注記

[Key] アトリビュートは、.Keyed()メソッドを使用して対応するキーを登録した型に使用する必要があります。詳しくはRegister with Keys セクションを参照してください。