[過去ログ] Microsoft .NET MAUI part9 [Xamarin] (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
42(1): デフォルトの名無しさん [] 2022/09/19(月) 15:37:24.08 ID:Guc0YHbo(8/10) AAS
>>4141(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に>>3232(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>();
こうすればそれぞれのコンストラクタにインスタンスが自動的に注入される
コンストラクタの引数をインターフェースにしとけばテストの時にモックが注入できる
を書けってこと?
43(2): デフォルトの名無しさん [sage] 2022/09/19(月) 15:42:31.60 ID:oefI52tK(2/3) AAS
>>42
MAUI使ってるんじゃねーの?
外部リンク[aspx]:www.syncfusion.com
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 1.388s*