我正在使用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