Json.Netを使用して、オブジェクトをシリアル化/逆シリアル化するために特別な注意が必要なプロパティをオブジェクトに持っています。の子孫を作ることでJsonConverter
、これを成功させることができました。これを行う一般的な方法は次のとおりです。
public class SomeConverter : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
...
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
...
}
public override bool CanConvert(Type objectType)
{
...
}
}
class SomeClass
{
[JsonProperty, JsonConverter(typeof(SomeConverter))]
public SomeType SomeProperty;
}
//Later on, in code somewhere
SomeClass SomeObject = new SomeClass();
string json = JsonConvert.SerializeObject(SomeObject, new SomeConverter());
このコードに関する私の問題は、すべてのシリアライゼーション/デシリアライゼーションでカスタム コンバーターを導入する必要があることです。私のプロジェクトでは、それができない場合がたくさんあります。たとえば、Json.Net を利用する他の外部プロジェクトも使用しており、それらは私のSomeClass
インスタンスで動作します。しかし、彼らのコードを変更したくない、または変更できないため、コンバーターを導入する方法がありません。
static
おそらくいくつかのメンバーを使用して Json.Net でコンバーターを登録する方法はありますか?