¿Por qué serializar la versión con JsonPropertyAttribute no funciona?

Estoy intentando serializar un objeto con un campo estático System.Version :

 [JsonObject(MemberSerialization.OptIn)] public class MyObj { [JsonProperty] private static string testStr; [JsonProperty(ItemConverterType = typeof(VersionConverter))] private static Version ver = System.Reflection.Assembly...Version; // some other non-serialized fields // ... } 

Aprendí de esta pregunta que la Version necesita un convertidor personalizado, que agregué como ItemConverterType . Sin embargo, cuando trato de serializarlo de esta manera, falla con el error: Valor de objeto de versión esperada :

 var o = MyObj(); using (StreamWriter file = File.CreateText(filename)) { JsonSerializer serializer = new JsonSerializer { Formatting = Formatting.Indented }; serializer.Serialize(file, o); // error } 

Funciona bien si modifico los atributos del campo como este:

 public class MyObj { ... [JsonProperty] [JsonConverter(typeof(VersionConverter))] private static Version ver = System.Reflection.Assembly...Version; ... 

Soy nuevo en los atributos. ¿Podrías arrojar algo de luz sobre por qué falla la primera? Estoy bastante seguro de que no estoy usando Json.NET correctamente, pero no puedo entender por qué.

ItemConverterType permite especificar un convertidor para usar para los artículos de colección . Vea la forma correcta de usar Newtonsoft Json ItemConverterType . Dado que la string y la Version no se tratan como colecciones, se ignora. Para un convertidor en la propiedad, use [JsonConverter] .

A la inversa, si tuviera una static List versions sería apropiado usar [JsonProperty(ItemConverterType = typeof(VersionConverter))] .