-Changed MemberConverter to be obsolete

This commit is contained in:
James Newton-King
2017-07-16 19:55:43 +12:00
parent c33b257f18
commit bbbddf0031
4 changed files with 62 additions and 7 deletions
@@ -10109,6 +10109,58 @@ This is just junk, though.";
Assert.AreEqual(propertyValue, testObject.GetPropertyValue(), "MyProperty should be populated");
}
[Test]
public void JsonPropertyConverter()
{
DateTime dt = new DateTime(2000, 12, 20, 0, 0, 0, DateTimeKind.Utc);
JsonSerializerSettings settings = new JsonSerializerSettings
{
ContractResolver = new JsonPropertyConverterContractResolver(),
Formatting = Formatting.Indented
};
JsonPropertyConverterTestClass c1 = new JsonPropertyConverterTestClass
{
NormalDate = dt,
JavaScriptDate = dt
};
string json = JsonConvert.SerializeObject(c1, settings);
StringAssert.AreEqual(@"{
""NormalDate"": ""2000-12-20T00:00:00Z"",
""JavaScriptDate"": new Date(
977270400000
)
}", json);
JsonPropertyConverterTestClass c2 = JsonConvert.DeserializeObject<JsonPropertyConverterTestClass>(json, settings);
Assert.AreEqual(dt, c2.NormalDate);
Assert.AreEqual(dt, c2.JavaScriptDate);
}
}
public class JsonPropertyConverterTestClass
{
public DateTime NormalDate { get; set; }
public DateTime JavaScriptDate { get; set; }
}
public class JsonPropertyConverterContractResolver : DefaultContractResolver
{
protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
{
JsonProperty property = base.CreateProperty(member, memberSerialization);
if (property.PropertyName == "JavaScriptDate")
{
property.Converter = new JavaScriptDateTimeConverter();
}
return property;
}
}
public class BaseClassWithProtectedVirtual
@@ -709,7 +709,6 @@ namespace Newtonsoft.Json.Serialization
{
property.PropertyName = (property.PropertyName != parameterInfo.Name) ? property.PropertyName : matchingMemberProperty.PropertyName;
property.Converter = property.Converter ?? matchingMemberProperty.Converter;
property.MemberConverter = property.MemberConverter ?? matchingMemberProperty.MemberConverter;
if (!property._hasExplicitDefaultValue && matchingMemberProperty._hasExplicitDefaultValue)
{
@@ -1560,7 +1559,6 @@ namespace Newtonsoft.Json.Serialization
// resolve converter for property
// the class type might have a converter but the property converter takes precedence
property.Converter = JsonTypeReflector.GetJsonConverter(attributeProvider);
property.MemberConverter = JsonTypeReflector.GetJsonConverter(attributeProvider);
DefaultValueAttribute defaultValueAttribute = JsonTypeReflector.GetAttribute<DefaultValueAttribute>(attributeProvider);
if (defaultValueAttribute != null)
@@ -122,7 +122,12 @@ namespace Newtonsoft.Json.Serialization
/// Gets or sets the member converter.
/// </summary>
/// <value>The member converter.</value>
public JsonConverter MemberConverter { get; set; }
[Obsolete("MemberConverter is obsolete. Use Converter instead.")]
public JsonConverter MemberConverter
{
get { return Converter; }
set { Converter = value; }
}
/// <summary>
/// Gets or sets a value indicating whether this <see cref="JsonProperty"/> is ignored.
@@ -1111,7 +1111,7 @@ namespace Newtonsoft.Json.Serialization
if (propertyContract != property.PropertyContract)
{
propertyConverter = GetConverter(propertyContract, property.MemberConverter, containerContract, containerProperty);
propertyConverter = GetConverter(propertyContract, property.Converter, containerContract, containerProperty);
}
}
@@ -1823,7 +1823,7 @@ namespace Newtonsoft.Json.Serialization
property.PropertyContract = GetContractSafe(property.PropertyType);
}
JsonConverter propertyConverter = GetConverter(property.PropertyContract, property.MemberConverter, null, null);
JsonConverter propertyConverter = GetConverter(property.PropertyContract, property.Converter, null, null);
if (!SetPropertyValue(property, propertyConverter, null, member, reader, newObject))
{
@@ -2160,7 +2160,7 @@ namespace Newtonsoft.Json.Serialization
property.PropertyContract = GetContractSafe(property.PropertyType);
}
JsonConverter propertyConverter = GetConverter(property.PropertyContract, property.MemberConverter, contract, containerProperty);
JsonConverter propertyConverter = GetConverter(property.PropertyContract, property.Converter, contract, containerProperty);
if (!reader.ReadForType(property.PropertyContract, propertyConverter != null))
{
@@ -2340,7 +2340,7 @@ namespace Newtonsoft.Json.Serialization
property.PropertyContract = GetContractSafe(property.PropertyType);
}
JsonConverter propertyConverter = GetConverter(property.PropertyContract, property.MemberConverter, contract, member);
JsonConverter propertyConverter = GetConverter(property.PropertyContract, property.Converter, contract, member);
if (!reader.ReadForType(property.PropertyContract, propertyConverter != null))
{