【问题标题】:A property or indexer may not be passed as an out or ref parameter Xamarin.Forms (C#)属性或索引器不能作为 out 或 ref 参数传递 Xamarin.Forms (C#)
【发布时间】:2019-04-28 17:35:36
【问题描述】:

我已经通过以下方式在一个名为 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 从而回收代码,但是我在创建依赖于属性的属性时发现了以下问题

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

【问题讨论】:

  • 用分号替换gimnasio{ get; set; }。你的意思是它是一个支持 field (不是属性),对吧?
  • 提出您的答案以将其标记为正确

标签: c# xamarin mvvm xamarin.forms inotifypropertychanged


【解决方案1】:

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

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

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

您可能打算将gimnasios 用作Gimnasios 属性的支持字段,因此将{ get; set; } 替换为分号:

private ObservableCollection<Gimnasio> gimnasios;

【讨论】:

    猜你喜欢
    • 2011-05-29
    • 1970-01-01
    • 2020-11-26
    • 2019-07-23
    • 2011-06-16
    • 2012-09-08
    • 2012-07-30
    • 2011-09-23
    相关资源
    最近更新 更多