title: Protobuf-net: Changing the way System.Type is deserialized
body: <p>Currently we have several messages defined that include System.Type fields/properties. The built-in behavior how protobuf-net deals with System.Type is fine in many cases, but unusable in our situation: We do want to have the type serialize its full name, but need to be in control of the lookup by name.</p>
  
  <p>I am unable to find a proper and working solution for this. On the one hand, there is the <a href="https://stackoverflow.com/questions/12475521/protobuf-net-error-message-no-serializer-defined-for-type-system-type">excellent answer</a> that explains how to register a surrogate for System.Type, but unfortunately that seems to be no longer working, as a System.Argument exception is thrown with "Data of this type has inbuilt behaviour, and cannot be added to a model in this way: System.Type".</p>
  
  <p>On the other hand there is the "TypeModel.DynamicTypeFormatting" event which doesn't seem to be invoked in a case like the following:</p>
  
  <pre><code>[ProtoContract]
  public class Foo { [ProtoMember] public List&lt;Type&gt; Types; }
  </code></pre>
  
  <p>Is there currently a way to solve this problem quickly without shipping a custom version with a quickfix on our side?</p>