Unityコンテナに挿入する以下のようなインターフェースがあります。
public interface IMyInstanceFactory
{
IEnumerable<IMyInstance> GetAll();
}
すべてIMyInstance
が実行前に認識されます。つまり、ブートストラップ内でセットアップでき、ユニティから取得できます。私の具体的な実装IMyInstanceFactory
は次のとおりです。
public class MyInstanceFactory:IMyInstanceFactory
{
IUnityContainer _container;
public MyInstanceFactory(IUnityContainer container)
{
_container = container;
}
public IEnumerable<IMyInstance> GetAll()
{
return _container.ResolveAll<IMyInstance>();
}
}
..そして私のブートストラップで私はこのようなことをします:
container.RegisterType<IMyInstance,MyInstance1>;
container.RegisterType<IMyInstance,MyInstance2>;
container.RegisterType<IMyInstance,MyInstance3>;
container.RegisterType<IMyInstanceFactory,MyInstanceFactory>;
これにより、すべてが美しく解決されます。ただし、コンテナー自体に依存したり、このためだけに実装したりしたくありません。IMyInstanceFactory
実装せずにこれを設定する方法はありIMyInstanceFactory
ますか? Unity はこの機能を提供していますか?
このようなもの..
container.RegisterType<IMyInstanceFactory,factory=>factory.GetAll()>().IsResolvedBy(unity.ResolveAll<IMyInstance>);
城がこれを行うことができることは知っていますが、Unity は同様のことを行うことができますか?