title: Why serializing Version with JsonPropertyAttribute doesn't work?
body: <p>I am trying to serialize an object with a static <code>System.Version</code> field:</p>
  
  <pre><code>[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
      // ...
  }
  </code></pre>
  
  <p>I have learnt from <a href="https://stackoverflow.com/questions/13170386">this question</a> that <code>Version</code> needs a custom converter, which I added as <code>ItemConverterType</code>. However, when I try to serialize it like this, it fails with the error: <em>Expected Version object value</em>:</p>
  
  <pre><code>var o = MyObj();
  using (StreamWriter file = File.CreateText(filename))
  {
      JsonSerializer serializer = new JsonSerializer { Formatting = Formatting.Indented };
      serializer.Serialize(file, o); // error
  }    
  </code></pre>
  
  <p>It works fine if I modify the attributes of the field like this:</p>
  
  <pre><code>public class MyObj
  {
      ...
      [JsonProperty]
      [JsonConverter(typeof(VersionConverter))]
      private static Version ver = System.Reflection.Assembly...Version;
      ...
  </code></pre>
  
  <p>I am new to attributes. Can you please shed some light as to why the first one fails ? I am quite sure I am not using <code>Json.NET</code> correctly, but can't figure out why.</p>