[알림]이란 무엇입니까?속성 변경됨INOTIFY를 구현하는 경우 C#에서 Invocator]속성이 변경되었습니까?
두 가지 유형의 구현이 있습니다.INotifyPropertyChanged
첫 번째는:
public abstract class ViewModelBase : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) { PropertyChangedEventHandler handler = PropertyChanged; if (handler != null) { handler(this, new PropertyChangedEventArgs(propertyName)); } } }
두 번째:
public abstract class ViewModelBase : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; [NotifyPropertyChangedInvocator] protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) { PropertyChangedEventHandler handler = PropertyChanged; if (handler != null) { handler(this, new PropertyChangedEventArgs(propertyName)); } } }
두 번째에는 추가 속성이 있습니다.[NotifyPropertyChangedInvocator]
진행 중인OnPropertyChanged
내 경우 둘 다 동일하게 작동하지만 무엇을, 왜, 언제 사용해야 하는지는 동일합니다.[NotifyPropertyChangedInvocator]
이것의 이점은 무엇입니까?인터넷에 검색해봤지만 좋은 답을 찾을 수 없었습니다.
그것은 그들의 주석에서 나온 리샤퍼 속성입니다 - 당신에게 경고를 주고 당신의 코드가 의심스러워 보이도록 디자인되었습니다 :)
고려 사항:
public class Foo : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void NotifyChanged(string propertyName) { ... }
private string _name;
public string Name {
get { return _name; }
set {
_name = value;
NotifyChanged("LastName");//<-- warning here
}
}
}
와 함께[NotifyPropertyChangedInvocator]
의 속성NotifyChanged
methodResharper는 (아마도) 잘못된 값으로 메소드를 호출하고 있다는 경고를 제공합니다.
이제 Resharper는 변경 알림을 만들기 위해 메서드를 호출해야 한다는 것을 알고 있으므로 일반 속성을 변경 알림과 함께 속성으로 변환하는 데 도움이 됩니다.
다음으로 변환:
public string Name
{
get { return _name; }
set
{
if (value == _name) return;
_name = value;
NotifyChange("Name");
}
}
이 예는 의 설명서에서 나온 것입니다.[NotifyPropertyChangedInvocator]
속성은 다음과 같습니다.
그NotifyPropertyChangedInvocator
는 리샤퍼 기능입니다.
코드에서 간단히 제거하여 작동할 수 있습니다.
여기에도 비슷한 질문이 있었습니다.
[알림]을 받는 방법을 아는 사람이 있습니까?속성 변경됨호출기]
언급URL : https://stackoverflow.com/questions/23213146/what-is-notifypropertychangedinvocator-in-c-sharp-when-implements-inotifyprope
'programing' 카테고리의 다른 글
동적 식을 컴파일하는 데 필요한 하나 이상의 유형을 찾을 수 없습니다.Microsoft에 대한 참조가 누락되어 있습니까?CSSharp.dll 및 시스템.Core.dll? (0) | 2023.05.10 |
---|---|
git에서 태그 간 커밋 목록 가져오기 (0) | 2023.05.10 |
기존 권한을 가진 사용자를 신속하게 삭제하는 방법 (0) | 2023.05.10 |
개체가 특정 유형인지 확인하는 방법 (0) | 2023.05.10 |
Git에 "합병되지 않은 파일이 있으므로 꺼내기가 불가능합니다"라고 표시되는 이유는 무엇입니까? (0) | 2023.05.10 |