public void ReturnsSameReferenceMultipleTimes_Int() { var boxingCache = new BoxingCache <int>(); var boxedValue_42_1 = boxingCache.GetBoxedValue(42); var boxedValue_42_2 = boxingCache.GetBoxedValue(42); Assert.IsTrue(ReferenceEquals(boxedValue_42_1, boxedValue_42_2)); var boxedValue_84_1 = boxingCache.GetBoxedValue(84); var boxedValue_84_2 = boxingCache.GetBoxedValue(84); Assert.IsTrue(ReferenceEquals(boxedValue_84_1, boxedValue_84_2)); }
public void ReturnsSameReferenceMultipleTimes_Bool() { var boxingCache = new BoxingCache <bool>(); var boxedValue_True_1 = boxingCache.GetBoxedValue(true); var boxedValue_True_2 = boxingCache.GetBoxedValue(true); Assert.IsTrue(ReferenceEquals(boxedValue_True_1, boxedValue_True_2)); var boxedValue_False_1 = boxingCache.GetBoxedValue(false); var boxedValue_False_2 = boxingCache.GetBoxedValue(false); Assert.IsTrue(ReferenceEquals(boxedValue_False_1, boxedValue_False_2)); }
protected override object ConvertBack(object value, Type targetType, object parameter) { decimal tmp = 0.0M; decimal?result = null; if (decimal.TryParse(value as string, out tmp)) { result = tmp; } return(BoxingCache.GetBoxedValue(result)); }
/// <summary> /// Sets the member value. /// </summary> /// <param name="model">The model.</param> /// <param name="member">The member.</param> /// <param name="modelInfo">The model information.</param> public virtual void SetMemberValue(object model, MemberValue member, SerializationModelInfo modelInfo) { var modelType = model.GetType(); try { var finalValue = BoxingCache.GetBoxedValue(member.Value); // In this very special occasion, we will not use ObjectAdapter since it // will cause property change notifications (which we don't want during deserialization) var modelEditor = model as IModelEditor; if (modelEditor != null && modelInfo.CatelPropertyNames.Contains(member.Name)) { modelEditor.SetValueFastButUnsecure(member.Name, finalValue); return; } _objectAdapter.SetMemberValue(model, member.Name, finalValue); } catch (Exception ex) { Log.Warning(ex, $"Failed to populate '{modelType.GetSafeFullName(false)}.{member.Name}', setting the member value threw an exception"); } }