protected virtual void OnPropertyChanged <T>(Expression <Func <T> > expression, ref T oldValue, T newValue) where T : IComparable <T>
        {
            if (oldValue == null && newValue == null)
            {
                return;
            }

            if (oldValue != null && (oldValue.Equals(newValue) || oldValue.CompareTo(newValue) == 0))
            {
                return;
            }

            if (oldValue == null || oldValue.ToString() != newValue.ToString())
            {
                if (oldValue != null)
                {
                    this.AddChangs(Propertyname.GetProperty(expression).Name, oldValue, newValue);
                }

                oldValue = newValue;

                this.HasModelChanged = true;

                this.OnPropertyChanged(Propertyname.GetProperty(expression).Name);
            }
        }
 protected void OnPropertyChanged <T>(Expression <Func <T> > expression)
 {
     if (expression == null)
     {
         throw new ArgumentNullException(nameof(expression));
     }
     OnPropertyChanged(Propertyname.GetProperty(expression).Name);
 }
 protected void OnPropertyChanged <T>(Expression <Func <T> > expression)
 {
     this.OnPropertyChanged(Propertyname.GetProperty(expression).Name);
 }