我正在使用VS 2017社区版我正在创建MVVM模式.我安装了fody后,我的代码出错,而教程的讲师在vs 2015上实现了这里是代码:
using PropertyChanged;
using System.ComponentModel;
namespace GProject_MVVM.ViewModel
{
/// <summary>
/// A base view model that fires Property Changed events as needed
/// </summary>
[ImplementPropertyChanged] // **I got error here**
public class BaseViewModel : INotifyPropertyChanged
{
/// <summary>
/// The event that is fired when any child property changes its value
/// </summary>
public event PropertyChangedEventHandler PropertyChanged = (sender, e) => { };
/// <summary>
/// Call this to fire <see cref="PropertyChanged"/> event
/// </summary>
/// <param name="name"></param>
public void OnPropertyChanged(string name)
{
PropertyChanged(this, new PropertyChangedEventArgs(name));
}
}
}
Run Code Online (Sandbox Code Playgroud)
[ImplementPropertyChanged]不应该在这一点上出错,教师成功地实现了它,所以我的代码上有什么遗漏?错误说:
严重级代码描述项目文件行抑制状态错误CS0619'EtrumentPropertyChangedAttribute'已废弃:'此配置选项已被弃用.此属性的用法是将INotifyPropertyChanged添加到具有关联事件定义的类中.之后,实现INotifyPropertyChanged的所有类都编织了它们的属性,天气它们是否具有ImplementPropertyChangedAttribute.此属性经常被错误地解释为具有编织属性的选择方法,这从来就不是意图,也不是它的运作方式.此属性已被AddINotifyPropertyChangedInterfaceAttribute替换.GProject_MVVM c:\ users\ahmed hussainy\documents\visual studio 2017\Projects\GProject_MVVM\GProject_MVVM\ViewModel\BaseViewModel.cs 9 Active
woe*_*liJ 14
例外已经说明了答案.
ImplementPropertyChangedAttribute'已废弃:'此配置选项已被弃用.此属性的用法是将INotifyPropertyChanged添加到具有关联事件定义的类中.之后,实现INotifyPropertyChanged的所有类都编织了它们的属性,天气它们是否具有ImplementPropertyChangedAttribute.
使用新版本的Fody.PropertyChanged,您不再需要添加属性.只要让那个你想成为编织工具的课程就可以了INotifyPropertyChanged.
所以基本上只是删除/删除[ImplementPropertyChanged]它将编译和编织(如果编织器存在FodyWeavers.xml)