c# - 为什么这个方法返回一个布尔值?
问题描述
为什么从 SetProperty 返回 bool?它没有被使用。
这是来自 Xamarin.Forms 模板的样板代码。
它也没有在继承的类中使用。
public class BaseViewModel : INotifyPropertyChanged
{
private bool isBusy = false;
public bool IsBusy
{
get { return isBusy; }
set { SetProperty(ref isBusy, value); }
}
protected bool SetProperty<T>(ref T backingStore,
T value,
[CallerMemberName] string propertyName = "",
Action onChanged = null)
{
if (EqualityComparer<T>.Default.Equals (backingStore, value))
return false;
backingStore = value;
onChanged?.Invoke();
OnPropertyChanged(propertyName);
return true;
}
#region INotifyPropertyChanged
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged([CallerMemberName] string propertyName = "")
{
var changed = PropertyChanged;
if (changed == null)
return;
changed.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
#endregion
}
解决方案
这个SetProperty
方法的返回值表明它是否有效地改变了它的底层支持字段。
该IsBusy
实现不使用 的返回值SetProperty
,但在可以访问此受保护的 SetProperty 方法的派生类中,其返回值可用于执行其他专门任务。
顺便说一句,我实际上没想到这个BaseViewModel
类有一个IsBusy
带有公共设置器的属性。就像现在一样,外界可以确定一个BaseViewModel
实例是否忙。在我看来,这有点奇怪。
推荐阅读
- php - 使用 openssl_decrypt 将 VB.NET AES 编码转换为 PHP
- php - 获取两列和几行MYSQL之间的平均时间
- java - java SSLSocketFactory如何从密钥库中选择SSL期间的服务器证书和私钥
- ios - Api Gateway 和 Lambda 函数:响应正文
- python - AttributeError:类型对象'Cliente'没有属性'query'
- hibernate - oneToMany 关联中多个实体映射的性能问题
- sql - 优化使用多个子选择来显示列的 SQL 查询
- swagger - API-platform POST操作招摇页面为空
- xcode - 如何在 MacOS 上切换命令行工具
- ruby-on-rails - 如何实现模型之间的多重关联?