首页 > 解决方案 > 有没有办法为 VS2015 实现类似的 Raise Property Changed?

问题描述

似乎我在 VS2015 中有以下代码的语法错误。错误听起来像:

'?' 类型的值 不能用作默认参数,因为没有标准转换为类型“T”

有没有办法在 VS2015 中实现类似的“提高属性更改”?

 public class ViewModel : ViewModelBase
    {

        // Property        
        public const string SelectedItemPropertyName = "SelectedItem";

        private int? _selectedItem;       
        public int? SelectedItem
        {
            get
            {
                return _selectedItem;
            }
            set
            {
                Set(SelectedItemPropertyName, ref _selectedItem, value);
            }
        }

        // Method
        private void Load()
        {
            int number = SelectedItem ?? -1;

            // do your work
        }


       // Raise property changed
        public override void RaisePropertyChanged<T>([CallerMemberName] string propertyName = null, T oldValue = default, T newValue = default, bool broadcast = false)
        {
            base.RaisePropertyChanged(propertyName, oldValue, newValue, broadcast);
            if (propertyName == nameof(SelectedItem))
                Load();
        }
    }


标签: c#mvvm

解决方案


看起来您使用的是 7.1 以下的 C# 版本。在这种情况下,您将需要使用default(T),而不是简单地default. 是默认值表达式文档的链接。


推荐阅读