私はモバイルアプリケーションのクロスプラットフォーム開発用にXamarin Formsを使用してプロジェクトを開始しています。私はMVVMモデルを使用していますが、そのうちのいくつかの小さなWPFアプリケーションの経験はほとんどありません。ICommandインターフェイスの効率的な使用
ICommandインターフェイスを使用してコマンドを作成し、ビューのXAMLにバインドします。デフォルトでは、重複したコードが大量に含まれています。 Xamarin.Formsは、hereという議論のように使われるICommandの具体的なサブタイプCommandを提供しています。私はそれらをインスタンス化する2つの明白な方法を見ています。
オプション#1 - コンストラクタにコマンドを割り当てます。
public class Presenter : ObservableObject
{
public Presenter()
{
DoStuffCommand = new Command(DoStuff);
}
public ICommand DoStuffCommand { get; set; }
private void DoStuff()
{
// VM stuff
}
}
オプション#2 -
public class Presenter : ObservableObject
{
public ICommand RunCommand { get { return new Command(DoStuff); } }
private void DoStuff()
{
// VM stuff
}
}
多くのビューモデルは、コマンドの数を持ってしようとしているゲッターでインスタンス化コマンド、およびアプローチ#2は、コンストラクタで1することにより、これらの1のすべてを割り当てる回避します - コマンドアクションが変更されないときは、このアクションをICommand自体で宣言していることがわかります。一方、これは、コマンドが起動するたびにCommandの新しいインスタンスを作成します。これは、アプローチ#1よりもメモリの効率が低いことは明らかです。
これは誰でも経験したことがありますか、これがパフォーマンスに顕著な影響を与えるかどうかを知ることができますか?コマンドオブジェクトを手動で破棄するなど、これを改善する方法はありますか?
ありがとうございます!
素晴らしいことだ、ありがとう - 私が探していたまさに。私はこのパターンがより頻繁に使われるのを見たことがありません。 – DGoodman
はい、それは本当に簡単です:) – Cheesebaron