私はいくつかの古いasp.net Webフォームページで作業していますが、DIを動作させようとしていますが、作成されていないオブジェクトの問題が発生しています。 。SimpleInjector遅延ジェネリック登録
私は、ウェブサイトの残りの部分で作業し、次の登録があります。私はこれの結果は、プロパティが取得していないということです
container.Register<Lazy<IDataFactory<SqlAccountFactory, int>>>(
() => new Lazy<IDataFactory<SqlAccountFactory, int>>(
container.GetInstance<IDataFactory<SqlAccountFactory, int>>));
を試してみましたが、怠惰な側面を取得するには
container.Register(typeof(IDataFactory<,>), new[] { typeof(SqlAccountFactory).Assembly });
を人口が多い。
ページの背後にあるコードの物件(このレイジーを使用していないときに動作上述したように):私は属性でマークされたコード尻のプロパティを設定するためにドキュメントからのコードを使用しています参考
[Dependency]
public Lazy<IDataFactory<SqlAccountFactory, int>> ProjectCodesRepository;
と上記の怠惰な登録はすべて正常に機能します。
誰かが私がやったばかげた何かを助けたり見つけることができますか?
私の問題を解決し、登録を修正しようとしているプロパティを変更しました。 AttributeUsageを追加すると、それが将来禁止されます。ありがとう! –
依存関係が 'Lazy'であることは一般的には悪い考えです。 ctorsは依存関係を保存するだけで済むので、オブジェクトの作成は非常に高速です。 –
Steven