私は、Ninject から軽量 (かつ高速) の Ioc フレームワークへの移行を検討しています。
私は LightInject を手に入れて遊んでいますが、次のことを行う方法が見つかりません:
RegisterConstructorDependency への呼び出し内から、解決されるオブジェクトのタイプを判別できるようにしたいと考えています。Param 情報は、パラメーターの場所について知る必要があるすべてを提供してくれます。しかし、注射の標的を特定することはできません。
これは、文字列値をコンストラクターに挿入しようとするときに問題になります。
例:
public interface IService { void Go(); }
public class Impl1 : IService {
public Impl1(string needsA){ }
public void Go(){ }
}
public class Impl2 : IService {
public Impl1(string needsA, string needsB){ }
public void Go(){ }
}
// Elsewhere
container.Register<IService, Impl1>();
container.Register<IService, Impl2>();
container.RegisterConstructorDependency<string>((factory, paramInfo) => ??? );
コンストラクター引数の登録で、どの実装 (Impl1 または Impl2) が解決されているかを判断する方法を教えてください。「needsA」に渡すには、異なる値が必要になる場合があります。
LightInject がこの情報を提供できない可能性があり、検索範囲を広げる必要があります。