private T ValidateProperties(FieldProperties newProperties) { Guard.NotNull(newProperties, nameof(newProperties)); newProperties.Freeze(); if (!(newProperties is T typedProperties)) { throw new ArgumentException($"Properties must be of type '{typeof(T)}", nameof(newProperties)); } return(typedProperties); }
private T ValidateProperties(FieldProperties newProperties) { Guard.NotNull(newProperties, nameof(newProperties)); newProperties.Freeze(); if (!(newProperties is T typedProperties)) { throw new ArgumentException($"Properties must be of type '{typeof(T)}", nameof(newProperties)); } newProperties.Validate(() => $"Cannot update field with id '{Id}', because the settings are invalid."); return(typedProperties); }
public void Should_set_or_freeze_sut(FieldProperties properties) { foreach (var property in properties.GetType().GetRuntimeProperties().Where(x => x.Name != "IsFrozen")) { var value = property.PropertyType.GetTypeInfo().IsValueType ? Activator.CreateInstance(property.PropertyType) : null; property.SetValue(properties, value); var result = property.GetValue(properties); Assert.Equal(value, result); } properties.Freeze(); foreach (var property in properties.GetType().GetRuntimeProperties().Where(x => x.Name != "IsFrozen")) { var value = property.PropertyType.GetTypeInfo().IsValueType ? Activator.CreateInstance(property.PropertyType) : null; Assert.Throws <InvalidOperationException>(() => { try { property.SetValue(properties, value); } catch (Exception ex) { throw ex.InnerException; } }); } }