Ошибка при использовании Fody [ImplementPropertyChanged]
Я использую VS 2017 Community Edition. Я создаю шаблон MVVM. После того, как я установил Fody, я получил ошибку в своем коде, в то время как инструктор из учебника реализовал его в 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));
}
}
}
[ImplementPropertyChanged] не должен делать ошибку на этом этапе, инструктор реализовал это успешно, так что в моем коде ничего не хватает? Ошибка говорит:
Код серьезности Описание Ошибка состояния подавления строки файла проекта CS0619 "ImplementPropertyChangedAttribute" устарел: "Эта опция конфигурации устарела. Этот атрибут использовался для добавления INotifyPropertyChanged в класс со связанным с ним определением события. После этого все классы, которые реализуют INotifyPropertyChanged, имеют свои свойства, независимо от того, имеют они атрибут ImplementPropertyChangedAttribute или нет. Этот атрибут часто неверно истолковывался как отказ от подхода к созданию свойств, что никогда не было целью и принципом действия. Этот атрибут был заменен AddINotifyPropertyChangedInterfaceAttribute.' GProject_MVVM c:\users\ahmed hussainy\ Documents\visual studio 2017\ Проекты \GProject_MVVM\GProject_MVVM\ViewModel\BaseViewModel.cs 9 Активен
2 ответа
Исключение уже гласит ответ.
ImplementPropertyChangedAttribute 'устарел: ' Эта опция конфигурации устарела. Этот атрибут использовался для добавления INotifyPropertyChanged в класс со связанным с ним определением события. После этого все классы, которые реализуют INotifyPropertyChanged, имеют свои свойства, независимо от того, имеют они атрибут ImplementPropertyChangedAttribute или нет.
С новой версией Fody.PropertyChanged вам больше не нужно добавлять атрибут. Просто сделайте тот класс, который вы хотите, чтобы ткачество было реализовано INotifyPropertyChanged
и это будет работать.
Так что в основном просто удалить / удалить[ImplementPropertyChanged]
и он будет компилироваться и переплетаться (если ткач FodyWeavers.xml
)
If you originally used this attribute exactly the way it was meant to be used, you should replace it with
[AddINotifyPropertyChangedInterface]
.
This way Fody will add the
INotifyPropertyChanged
interface to your class, and then the weaver will implement it properly.