3

私たちのプロジェクトでは、Unity を依存性注入フレームワークとして使用しています。今、私は の遅延バインド バージョンが必要な状況に直面していIUnityContainer.RegisterInstance()ます。

ninject では、私がやろうとしているコードは次のようになります。

this.Bind<IMyInterface>().ToMethod(context => GetMyObjectLateBound());

ただし、Unity では、これを行う方法を今のところ見つけていません。

これが必要な理由は、インスタンスがIMyInterfaceまだ作成されておらず、バインディングが発生し、オブジェクトの作成も Unity によって処理されていないためです (これをすぐに置き換えることはできません)。

4

1 に答える 1

4

UnityはLazyをサポートしています。Unityに次の拡張機能を追加する必要があります。

unityContainer.AddNewExtension<LazySupportExtension>();

次に、次のことを実行できます。

unityContainer.RegisterType<IComponent, Component1>(); 
var lazyComponent = unityContainer.Resolve<Lazy<IComponent>>();

お役に立てれば。

于 2011-03-22T14:18:44.587 に答える