1
我有一個自定義轉換器JSON.NET解決嵌套接口列表混凝土類
public class ConcreteTypeConverter<T> : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
serializer.Serialize(writer, value);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
return serializer.Deserialize<T>(reader);
}
public override bool CanConvert(Type objectType)
{
return true;
}
}
然後我有下面的類的&接口
[DataContract]
public class Health : IHealth
{
[DataMember(Name = "status")]
public string Status { get; set; }
[DataMember(Name = "alerts")]
[JsonConverter(typeof(ConcreteTypeConverter<List<Alert>>))]
public IList<IAlert> Alerts { get; set; }
}
[DataContract]
public class Alert : IAlert
{
[DataMember(Name = "code")]
public string Code { get; set; }
}
public interface IAlert
{
string Code { get; set; }
}
public interface IHealth
{
string Status { get; set; }
IList<IAlert> Alerts { get; set; }
}
我怎樣才能轉換器映射的IList列表?
當前的代碼拋出
Unable to cast object of type 'System.Collections.Generic.List`1[xxx.Services.xxx.New.Alert]' to type 'System.Collections.Generic.IList`1[xxx.Services.xxx.Configuration.Model.New.IAlert]'.
你已經「X標記出」的命名空間的不同部分異常消息中的Alert類。他們實際上是相同的還是不同的? –
他們是不同的。第一個是具體類,第二個是具體類繼承的接口。這兩個都在兩個獨立的項目中。 –
這就是我所懷疑的。 galenius答案頂部的鏈接解釋了爲什麼我想知道:) –