我正在使用Azure数据库优先EF方法。我在Azure Web服务中的一个实体定义如下:JsonConverter和EntityData
public class Company : EntityData
{
public string CompanyName { get; set; }
}
它从EntityData继承Id属性。 Id属性是字符串类型。
在客户端,我有以下实体:
class Company
{
[JsonConverter(typeof(IntConverter))]
public int Id { get; set; }
public string CompanyName { get; set; }
}
正如你可以在上面看到,我需要的Id从字符串转换为int。
我创建了以下JSON转换器:
class IntConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return true;
}
public override object ReadJson(JsonReader reader, Type objectType,
object existingValue, JsonSerializer serializer)
{
if (reader.Value == null)
return 0;
int num;
if (Int32.TryParse(reader.Value.ToString(), out num))
return num;
else
return 0;
}
public override void WriteJson(JsonWriter writer, object value,
JsonSerializer serializer)
{
serializer.Serialize(writer, value.ToString());
}
}
它工作正常,但因为这是我的第一个JSON转换器,我不知道如果我创造了它正确。我看到了转换器的例子,他们使用existingValue而不是reader.Value。在我的情况下,existingValue总是0.
上述实现是否正确?
'existingValue'是现有的值,因为'Company.Id'永远不会直接分配给属性或从ctor,它将始终为0. – Xiaoy312
我投票结束此问题作为离题,因为它是关于审查工作代码。它属于[CodeReview](https://codereview.stackexchange.com/help/on-topic)。 –
至少在结束我的问题之前,我很清楚从DBC那里得到了很好的见解:)我不知道这是脱离主题。再次感谢DBC的帮助。 – ata6502