Xamarin.Formsでアプリを作成するためにPrism.DryIoc.Formsを使用しています。アプリの起動時間を最小限に抑えるために、たくさんの依存関係を持つクラスに対してLazy <パターンを使用しています。Lazy <>をPrism.DryIoc.Formsとともに使用すると、「コンテナはガベージコレクトされています」例外が発生する
これは、Prism.Unity.Formsで正常に動作するために使用されました。しかし、私はそれをPrism.DryIoc.Formsで動作させることはできません。どんな助けもありがとう。
コードは次のとおりです。私たちは、このようなページビューモデルを持っている:ページビューモデルがインスタンス化された後_lazySomeClass.Valueを呼び出すとき
public class MySamplePageViewModel
{
private readonly Lazy<ISomeClass> _lazySomeClass;
public MySamplePageViewModel(Lazy<ISomeClass> lazySomeClass)
{
_lazySomeClass = lazySomeClass;
}
public void SomeMethod()
{
_lazySomeClass.Value.DoIt(); //throws exception
}
}
しかし、我々はコンテナが使用できなくなった」というメッセージと例外を取得(garbage-てきました収集された)。 "。
var container = (Application.Current as PrismApplicationBase<IContainer>).Container;
var lazySomeClass = container.Resolve<Lazy<ISomeClass>>();
lazySomeClass.Value.DoIt(); //works fine
私たちは、このように登録をやっている:
container.Register<ISomeClass, SomeClass>(Reuse.Singleton);
container.RegisterTypeForNavigation<MySamplePage, MySamplePageViewModel>("MySamplePage");
DryIoc自体のバージョンは何ですか? – dadhi
私はDryIoc 2.10.1を使用しています.Prism.DryIoc.Forms 6.3.0.1で動作するようになったのはこれだけです。 より高いバージョンのDryIocを取得すると、 'ファイルまたはアセンブリ 'DryIoc、Version = 2.12.1.0、Culture = neutral、PublicKeyToken = null'またはその依存関係のいずれかを読み込めませんでした。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。 ' コンテナにアクセスしているとき。 –