title: Why does protobuf-net calls the getter of a property during deserialization but setter was not called yet
body: <p>I have a property which relies on a valid state of the object. I am ensuring this either during creation of the object or in the <code>OnDeserialized</code> function.</p>
  
  <p>Now I got a magic exception during <code>protobuf-net</code> deserialization because the object was not yet valid because the getter of the property is already called during deserialization. Neither the setter was called nor the <code>OnDeserialized</code> method (<code>OnDeserializing</code> was called!)</p>
  
  <p>I did convert from DataContractSerializer so SkipConstructor is to ensure identical behavior (I don't want to remove it). The code looks more or less like this:</p>
  
  <pre><code>[ProtoContract(SkipConstructor = true, EnumPassthru = true)]
  public class MyClass
  {
      [OnSerializing]
      [ProtoBeforeSerialization]
      private void OnSerializing(StreamingContext c)
      {
          // first in here
      }
  
      [OnSerialized]
      [ProtoAfterSerialization]
      private void OnSerialized(StreamingContext c)
      {
          //
      }
  
      [ProtoMember(1)]
      private AnotherClass[] NetworkValues
      {
          get {   /* Why here after OnSerializing? */ }
          set { }
      }
  }
  </code></pre>
  
  <p>I don't get it. What is the getter used for during deserialization?</p>