public void SetDisplayValue(IBehaviorContext vm, object value) { Check.NotNull(vm, nameof(vm)); IValueAccessorBehavior <TValue> accessBehavior = GetNextBehavior <IValueAccessorBehavior <TValue> >(); //ChangeValueRequest<TValue> request = value as ChangeValueRequest<TValue>; //if (request != null) { // ConversionResult<TValue> result = request.Converter.ConvertBack(request.NewValue); // if (result.Successful) { // vm.FieldValues.ClearField(_conversionErrorField); // accessBehavior.SetValue(vm, result.Value); // } else { // vm.FieldValues.SetValue(_conversionErrorField, result.ErrorMessage); // return; // } //} else { // TODO: Tidy up this if... if (value is TValue || (value == null && TypeService.CanAssignNull(typeof(TValue)))) { accessBehavior.SetValue(vm, (TValue)value); } else { throw new ArgumentException( ExceptionTexts.DisplayValueHasWrongType.FormatWith( _propertyName, typeof(TValue).Name, value ), "value" ); } //} }
public void CanAssignNull_ReferenceType() { Assert.IsTrue(TypeService.CanAssignNull(typeof(object))); Assert.IsTrue(TypeService.CanAssignNull(typeof(Nullable <int>))); Assert.IsFalse(TypeService.CanAssignNull(typeof(int))); Assert.IsFalse(TypeService.CanAssignNull(typeof(TestStruct))); }