public void SimplePropertyBuilder_should_not_generate_a_value_if_optional() { var obj = new Class1(); var propInfo = typeof(Class1).GetProperty("nullableProperty1"); var lookup = Mock.Of <IPropertyInfoMetadataLookup>( f => f.GetMetadata(propInfo) == new Parameter { required = false }); var builder = new SimplePropertyBuilder(lookup); Assert.IsTrue(builder.BuildProperty(obj, propInfo)); Assert.AreEqual(default(int?), obj.nullableProperty1); }
public void SimplePropertyBuilder_should_ignore_nullable_properties() { var obj = new Class1(); var propInfo = typeof(Class1).GetProperty("nullableProperty1"); var lookup = Mock.Of <IPropertyInfoMetadataLookup>( f => f.GetMetadata(propInfo) == new Parameter { required = false }); var builder = new SimplePropertyBuilder(lookup); Assert.IsTrue(builder.BuildProperty(obj, propInfo)); Assert.IsFalse(obj.nullableProperty1.HasValue); }
protected virtual void AddSimpleProperty(PropertyInfo pi) { var pb = DefineProperty(pi.Name, pi.PropertyType); pb.AddAttribute <DataMemberAttribute>(); var fb = GetOrCreatePrivateField(GetFieldName(pi), pi.PropertyType); var attributes = pi.GetCustomAttributes(true); var dvp = attributes.OfType <IDefaultValueProvider>().FirstOrDefault(); if (dvp is null) { var dva = attributes.OfType <System.ComponentModel.DefaultValueAttribute>().FirstOrDefault(); if (dva is not null) { dvp = new DefaultValueAttribute(dva.Value); } } if (dvp is not null) { AddDefaultFieldValue(fb, dvp); } var spb = new SimplePropertyBuilder(pi, pb, fb, dvp); if (pi.CanRead) { AddSimplePropertyGetter(spb); } if (pi.CanWrite) { AddSimplePropertySetter(spb); } }