[過去ログ] Microsoft .NET MAUI part9 [Xamarin] (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
32
(1): デフォルトの名無しさん [sage] 2022/09/19(月) 11:35:41.96 ID:lsi5cYj1(2/5) AAS
DIならAddTransientだと別々のインスタンスになるからAddSingletonしとけ

public class Model
{
public Collection{get;}=new ObservableCollection<string>();
}
public class ViewModel
{
public ViewModel(Model model)
{
Model=model;
}
public Model Model{get;}
}
public MainPage(ViewModel viewModel)
{
ViewModel=viewModel;
}
public Model ViewModel{get;}
}

こんな風に作ったら

builder.Services.AddSingleton<Model>().AddSingleton<ViewModel>().AddSingleton<MainPage>();

こうすればそれぞれのコンストラクタにインスタンスが自動的に注入される
コンストラクタの引数をインターフェースにしとけばテストの時にモックが注入できる
42
(1): デフォルトの名無しさん [] 2022/09/19(月) 15:37:24.08 ID:Guc0YHbo(8/10) AAS
>>41
41(1): デフォルトの名無しさん [sage] 2022/09/19(月) 15:10:23.98 ID:oefI52tK(1/3) AAS
>>40
いやだからnewしないの
さっき書いたコードのModelのとこを共有したいコレクションを持ったクラスに書き換える
するとサービスプロバイダーにそのクラスを要求したら最初の1回は自動的にnewされたインスタンスが返り、次からは同じインスタンスが返る
つまり何回要求しても同じものが返ってくるんだよ
ここではDIを使ってるからMainPageがMauiAppに作成された時点でViewModelが自動的にサービスプロバイダから注入され、ViewModelが作成された時点でModelが注入される
同じく別のページとそのVMもAddSingletonしとけばそのページに遷移した時にVMにモデルの同じインスタンスが注入される
同じインスタンスだから状態も共有する
newしたら別のインスタンスになっちゃうだろ?
うーんわからん…
Program.csに>>32を書けってこと?
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.038s