【发布时间】:2016-10-03 18:21:18
【问题描述】:
我开始使用 Xamarin Forms 跨平台开发移动应用程序的项目。我正在使用 MVVM 模型,除了一些小型 WPF 应用程序之外,我对它几乎没有经验。
我正在使用 ICommand 接口在视图的 XAML 中创建命令并绑定到它们,默认情况下这涉及大量重复代码。 Xamarin.Forms 提供了 ICommand 的具体子类型 Command,它在讨论 here 中使用,我看到了两种明显的实例化它们的方法。
选项 #1 - 在构造函数中分配命令。
public class Presenter : ObservableObject
{
public Presenter()
{
DoStuffCommand = new Command(DoStuff);
}
public ICommand DoStuffCommand { get; set; }
private void DoStuff()
{
// VM stuff
}
}
选项 #2 - 在 getter 中实例化命令
public class Presenter : ObservableObject
{
public ICommand RunCommand { get { return new Command(DoStuff); } }
private void DoStuff()
{
// VM stuff
}
}
许多视图模型将有许多命令,方法 #2 避免在构造函数中一一分配所有这些 - 当命令操作不会改变时,我更清楚地声明此操作ICommand 本身。另一方面,这将在每次命令触发时创建一个新的 Command 实例,这显然比方法 #1 的内存效率低。
有没有人有这方面的经验,和/或可以告诉我这是否会显着影响性能?有没有办法对此进行改进,例如手动销毁 Command 对象?
谢谢!
【问题讨论】: