9

Autofac を使用すると、.AsImplementedInterfaces() またはチェーン化された .As<>() 呼び出しと .SingleInstance() を使用して、複数のインターフェイスを同じインスタンスに非常に簡単に解決できます。これは TinyIoC でも実行できますか? 同じインターフェースの複数の実装を登録する方法しか見つけられませんでしたが、登録などを連鎖させる方法はありません。

私の理解では、これは IoC コンテナーにとって非常に重要な機能ですよね。

4

1 に答える 1

12

私が正しく理解しているなら、あなたは次のようなものを持っています

public class MyThing : IFoo, IBar
{
}

そして、次のものが互いに同じインスタンスを返すようにします。

Resolve<IFoo>();
Resolve<IBar>();

もしそうなら、それは可能ですが、それは少し醜いです:

container.Register<IFoo, MyThing>();
container.Register<IBar>((c,p) => c.Resolve<IFoo>() as IBar);

必要に応じて、おそらくそれをより適切な構文にラップすることもできますが、そのファクトリ デリゲートは、実質的に内部で発生するものです。

于 2012-06-27T09:39:31.850 に答える