Захват исключения и установка значения для JsonProperty

#c# #json.net

#c# #json.net

Вопрос:

Я хотел захватить исключения в методе CreateProperty JSON.NET и замените тип и сообщение свойства исключением, возникшим в этом свойстве.

это то, чего я достиг до сих пор.

 class CustomResolver : DefaultContractResolver
{
    protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
    {
        JsonProperty property = base.CreateProperty(member, memberSerialization);

        property.ShouldSerialize = instance =>
        {
            var prop = (PropertyInfo)member;
            try
            {
                if (prop.CanRead)
                {
                    prop.GetValue(instance, null);
                }
            }
            catch(Exception exception)
            {
                property.PropertyType = typeof(string);
                property.DefaultValue = exception.Message;
                return true;
            }
            return true;
        };

        return property;
    }
}
  

и у меня есть класс.

 class MyClass{
    public int Id {get; set;}
    public decimal Amount
    {
            get { throw new Exception("Test Exception"); }
    }
}
  

теперь я пытаюсь сериализовать объект :

 var obj = new MyClass();

var convertedString = JsonConvert.SerializeObject(obj, Formatting.Indented,
                new JsonSerializerSettings
                {
                    ReferenceLoopHandling =
                        ReferenceLoopHandling.Ignore,
                    Converters = new List<JsonConverter>
                    {
                        new IsoDateTimeConverter
                        {
                            DateTimeFormat =
                                "yyyy-MM-dd hh:mm:ss"
                        }
                    },
                    ContractResolver = new CustomResolver()
                });
  

чего я пытаюсь достичь, так это :

 {
    "Id" : 0,
    "Amount" : "Test Exception"
}
  

но, похоже, это не работает. кто-нибудь может мне помочь с этим.

Спасибо