不能将属性或索引器作为out或ref参数Xamarin.Forms(C#)传递

时间:2019-04-28 17:35:36

标签: c# xamarin mvvm xamarin.forms inotifypropertychanged

我已经通过以下方式在名为BaseViewModel的类中实现了INotifyPropertyChanged ....

BASEVIEWMODEL.CS:

  public class BaseViewModel : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;

        protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }

        protected void SetValue<T>(ref T backingField, T value, [CallerMemberName] string propertyName = null)
        {
            if (EqualityComparer<T>.Default.Equals(backingField, value))
            {
                return;
            }

            backingField = value;
            OnPropertyChanged(propertyName);
        }
    }

目的是我所有的ViewModel都继承自BaseViewModel,从而回收代码,但是在创建依赖于属性的属性时我发现了以下问题

Screenshoot

如您所见,我的GymViewModel继承自BaseViewModel,如何创建依赖于属性的属性?我究竟做错了什么?对我有帮助吗?

1 个答案:

答案 0 :(得分:0)

编译器产生错误,因为您将gimnasios设为属性而不是字段:

private ObservableCollection<Gimnasio> gimnasios { get; set; }

正如编译器所说,不允许将属性作为ref参数传递。

您可能希望gimnasios成为Gimnasios属性的支持 field ,所以用分号替换{ get; set; }

private ObservableCollection<Gimnasio> gimnasios;