依存関係を解決するために、TinyIoC で Nancy を使用しています。
特に 1 つの依存関係は、アプリケーション ライフサイクル シングルトンである必要があります。
デフォルトのコンストラクターでそれを行うと、動作します:
container.Register<IFoo, Foo>().AsSingleton(); // WORKS
しかし、コンストラクターでいくつかの引数を使用してこれを試しても、そうではありません:
container.Register<IFoo>((c, e) => new Foo("value", c.Resolve<ILogger>())).AsSingleton();
// FAILS with error "Cannot convert current registration of Nancy.TinyIoc.TinyIoCContainer+DelegateFactory to singleton"
.AsSingleton()
なくても、再び機能しますが、シングルトンを取得できません:
container.Register<IFoo>((c, e) => new Foo("value", c.Resolve<ILogger>()));
// Works, but Foo is not singleton
何か案は?間違いは明らかだと思いますが、見つけられません。私はすべてのgoogle-fooを使い果たしました。
編集
コードは次の場所で実行されます。
public class Bootstrapper : DefaultNancyBootstrapper
{
protected override void ConfigureApplicationContainer(TinyIoCContainer container)
{
base.ConfigureApplicationContainer(container);
// here
}
}