到目前为止,我已经看到了两个不同的建议。我不确定它们是否相同,或者更简单,更好用。
在构造函数中创建
public SessionViewModel()
{
LikeCommand = new Command(ApplyLike);
}
public ICommand LikeCommand {get;private set;}
在ViewModel主体中创建
public SessionViewModel()
{
}
private ICommand likeCommand;
public ICommand LikeCommand => likeCommand ?? (likeCommand = new Command(() => ApplyLike()));
第二种方法似乎更复杂,但是它具有优势吗?
答案 0 :(得分:1)
首选另一种方式:
func applicationWillEnterForeground(_ application: UIApplication) {
// Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
let mainStoryboard: UIStoryboard = UIStoryboard(name:"Main",bundle:Bundle.main)
let pinViewConroller: PINViewController = mainStoryboard.instantiateViewController(withIdentifier: "PINViewController") as! PINViewController
self.window?.rootViewController.present(pinViewConroller, animated: false, completion: nil)
}
它与上面的两个示例都不同,因为它是public ICommand LikeCommand { get; }
public SessionViewModel()
{
LikeCommand = new Command(ApplyLike);
}
。这样read only auto property
将不可变(不可更改),换句话说,这将使混乱代码的可能性降低。我发现它更容易阅读和理解,因为您可以期望初始化命令的唯一位置是构造函数。
答案 1 :(得分:1)
相同的...东西:) 尝试:
params = {'text.usetex': True,
'font.size': 11,
'font.family': 'times',
'text.latex.unicode': True,
}
plt.rcParams.update(params)
这还使您可以进行诸如“刷新所有命令状态”之类的交互,并且可以更好地通用访问所有命令。
重要说明:这是原型代码,不能有效,因为它应该包含更多的检查内容,等等:)