본문 바로가기
Development/.NET

이벤트를 구독해서 값 변경을 감지하기 (C#)

by 박수무당벌레 2024. 11. 20.

사용자가 UI 컨텍스트를 통해 데이터 작업을 수행할 때, 각 행위를 EditModeType으로 정의하고 해당 변수의 값 변경을 감지하여 처리할 수 있습니다.

 

이를 구현하는 것이 EditModeTypeNotifier 클래스 입니다.

  • UI 혹은 비즈니스 로직이 즉시 반응할 수 있도록 돕는 도우미 클래스이자,
  • EditModeType 값의 변경을 추적하고
  • 값 변경 시 외부에서 이벤트를 통해 반응할 수 있도록 도와줍니다.

 

또한, EditModeChangedEventArgs 이벤트 객체를 활용하면,

이전 값과 새로운 값에 모두 접근할 수 있어 값 변경에 따른 세부적인 처리 로직을 구현할 수 있습니다.

 

코드 구현 )

public enum EditModeType {
        Insert,
        Update,
        Delete
}

class EditModeTypeNotifier {
        private EditModeType _value;

        public event EventHandler<EditModeChangedEventArgs> ValueChanged;
        public event EventHandler ValueChanged2;

        public EditModeType Value {
            get => _value;
            set {
                var oldValue = _value;
                _value = value;
                ValueChanged?.Invoke(this, new EditModeChangedEventArgs(oldValue, _value));
            }
        }
}

public class EditModeChangedEventArgs : EventArgs {
        public EditModeType OldValue { get; }
        public EditModeType NewValue { get; }

        public EditModeChangedEventArgs(EditModeType oldValue, EditModeType newValue) {
            OldValue = oldValue;
            NewValue = newValue;
        }
}

 

사용 예시)

EditModeTypeNotifier notifier = new EditModeTypeNotifier();
notifier.ValueChanged += notifier_ValueChanged;

private void notifier_ValueChanged(object sender, EditModeChangedEventArgs e) {
	EditModeType newValue = e.NewValue;
	EditModeType oldValue = e.OldValue;
}