У меня есть базовые и некоторые производные классы:
abstract class A
{
public string type{get;}
}
class A1: A
{
type => Classes.A1
}
class A2: A
{
type => Classes.A2
}
, и я ожидаю получить ответ от внешнего API:
class ResponseResult
{
public List<A> values{get;set;}
}
, но когда я читаю ответ, он получает "Невозможно создатьабстрактный класс "сообщение об ошибке.Я уже написал простой конвертер
public class MyConverter: JsonConverter
{
private static readonly JsonSerializer Serializer = new JsonSerializer();
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
var jObject = JObject.Load(reader);
var typeString = jObject.Value<Classes>("type");
var requiredType = RecoverType(typeString);
return Serializer.Deserialize(jObject.CreateReader(), requiredType);
}
private Type RecoverType(Classes type)
{
switch (type)
{
case Classes.A1:
return typeof(A1);
case Classes.A2:
return typeof(A2);
default:
throw new ArgumentOutOfRangeException(nameof(type), type, null);
}
}
public override bool CanConvert(Type objectType)
{
return typeof(A).IsAssignableFrom(objectType) || typeof(A) == objectType;
}
public override bool CanWrite => false;
}
Как я могу сказать RestSharp использовать этот конвертер?