|
|
@@ -746,51 +746,51 @@ namespace InABox.Core
|
|
|
|
|
|
public static bool HasOriginalValue<T, TType>(this T sender, Expression<Func<T, TType>> property) where T : BaseObject
|
|
|
{
|
|
|
- //var prop = ((MemberExpression)property.Body).Member as PropertyInfo;
|
|
|
- String propname = CoreUtils.GetFullPropertyName(property, ".");
|
|
|
+ var propname = CoreUtils.GetFullPropertyName(property, ".");
|
|
|
return !String.IsNullOrWhiteSpace(propname) && sender.OriginalValueList != null && sender.OriginalValueList.ContainsKey(propname);
|
|
|
}
|
|
|
|
|
|
- public static bool TryGetOriginalValue<T, TType>(this T sender, Expression<Func<T, TType>> property, [NotNullWhen(true)] out TType value) where T : BaseObject
|
|
|
+ public static bool TryGetOriginalValue<T, TType>(this T sender, Expression<Func<T, TType>> property, TType defaultValue, [NotNullWhen(true)] out TType value) where T : BaseObject
|
|
|
{
|
|
|
- var prop = ((MemberExpression)property.Body).Member as PropertyInfo;
|
|
|
- if(prop is null || sender.OriginalValueList is null)
|
|
|
+ var propname = CoreUtils.GetFullPropertyName(property, ".");
|
|
|
+ if(propname.IsNullOrWhiteSpace() || sender.OriginalValueList is null)
|
|
|
{
|
|
|
- value = default;
|
|
|
+ value = defaultValue;
|
|
|
return false;
|
|
|
}
|
|
|
- else if(sender.OriginalValueList.TryGetValue(prop.Name, out var val))
|
|
|
+ else if(sender.OriginalValueList.TryGetValue(propname, out var val))
|
|
|
{
|
|
|
value = CoreUtils.ChangeType<TType>(val);
|
|
|
return true;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- value = default;
|
|
|
+ value = defaultValue;
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ public static bool TryGetOriginalValue<T, TType>(this T sender, Expression<Func<T, TType>> property, [NotNullWhen(true)] out TType value) where T : BaseObject
|
|
|
+ {
|
|
|
+ return sender.TryGetOriginalValue(property, default, out value);
|
|
|
+ }
|
|
|
+
|
|
|
public static TType GetOriginalValue<T, TType>(this T sender, Expression<Func<T, TType>> property) where T : BaseObject
|
|
|
{
|
|
|
- var prop = ((MemberExpression)property.Body).Member as PropertyInfo;
|
|
|
- return prop != null && sender.OriginalValueList != null && sender.OriginalValueList.TryGetValue(prop.Name, out var value)
|
|
|
- ? (TType)CoreUtils.ChangeType(value, typeof(TType))
|
|
|
- : default;
|
|
|
+ sender.TryGetOriginalValue(property, out var value);
|
|
|
+ return value;
|
|
|
}
|
|
|
|
|
|
public static TType GetOriginalValue<T, TType>(this T sender, Expression<Func<T, TType>> property, TType defaultValue) where T : BaseObject
|
|
|
{
|
|
|
- var prop = ((MemberExpression)property.Body).Member as PropertyInfo;
|
|
|
- return prop != null && sender.OriginalValueList != null && sender.OriginalValueList.TryGetValue(prop.Name, out var value)
|
|
|
- ? (TType)CoreUtils.ChangeType(value, typeof(TType))
|
|
|
- : defaultValue;
|
|
|
+ sender.TryGetOriginalValue(property, defaultValue, out var value);
|
|
|
+ return value;
|
|
|
}
|
|
|
|
|
|
public static void SetOriginalValue<T, TType>(this T sender, Expression<Func<T, TType>> property, TType value) where T : BaseObject
|
|
|
{
|
|
|
- var prop = ((MemberExpression)property.Body).Member as PropertyInfo;
|
|
|
- sender.OriginalValueList[prop.Name] = value;
|
|
|
+ var propname = CoreUtils.GetFullPropertyName(property, ".");
|
|
|
+ sender.OriginalValueList[propname] = value;
|
|
|
}
|
|
|
}
|
|
|
|