コード例 #1
0
 /// <summary>
 /// 속성 설정
 /// </summary>
 /// <typeparam name="TProperty">속성 형식</typeparam>
 /// <param name="obj">속성을 포함한 객체</param>
 /// <param name="target">속성 저장 멤버</param>
 /// <param name="value">설정 값</param>
 /// <param name="propertyChangingEvent">PropertyChanging 이벤트</param>
 /// <param name="propertyName">속성 명</param>
 /// <returns>값 변경 여부</returns>
 public static bool Set <TProperty>(this INotifyPropertyChanging obj, ref TProperty target, TProperty value, PropertyChangingEventHandler propertyChangingEvent, [CallerMemberName] string propertyName = null)
 {
     if (!EqualityComparer <TProperty> .Default.Equals(target, value))
     {
         var eventArgs = new QueryPropertyChangingEventArgs <TProperty>(propertyName, value);
         propertyChangingEvent?.Invoke(obj, eventArgs);
         if (!eventArgs.IsCanceled)
         {
             target = value;
             return(true);
         }
     }
     return(false);
 }
コード例 #2
0
 /// <summary>
 /// PropertyChanging 이벤트를 발생시킴.
 /// </summary>
 /// <param name="e"></param>
 /// <returns></returns>
 protected virtual bool OnPropertyChanging(QueryPropertyChangingEventArgs e)
 {
     PropertyChanging?.Invoke(eventSource, e);
     return(!e.IsCanceled);
 }