private static void AddProperty(StructuralTypeConfiguration config, string propertyName) { var propertyInfo = config.ClrType.GetProperty(propertyName); var property = config.AddProperty(propertyInfo); var attribute = propertyInfo.GetCustomAttribute <DataMemberAttribute>(inherit: false); if (attribute != null && !String.IsNullOrWhiteSpace(attribute.Name)) { property.Name = attribute.Name; } else { var caser = new LowerCamelCaser(); property.Name = caser.ToLowerCamelCase(propertyInfo.Name); } }
public void ToLowerCamelCase_LowerCamelCaser_HasSameBehaviorAsJsonNet(string propertyName, string expectName) { // Arrange var lowerCamelCaser = new LowerCamelCaser(); var camelCasePropertyNamesContractResolver = new CamelCasePropertyNamesContractResolver(); // Act string nameResolvedByLowerCamelCaser = lowerCamelCaser.ToLowerCamelCase(propertyName); string nameResolveByJsonNet = camelCasePropertyNamesContractResolver.GetResolvedPropertyName(propertyName); // Newtonsoft appears to have changed from v6 to v10 here. Some cases that used to pass // and were changed are: // [InlineData("MyPI", "mypi")] => [InlineData("MyPI", "myPI")] // [InlineData("U_ID", "u_id")] => [InlineData("U_ID", "u_ID")] //Assert.Equal(nameResolveByJsonNet, nameResolvedByLowerCamelCaser); // Assert Assert.Equal(expectName, nameResolvedByLowerCamelCaser); }