title: How does a DataContractSerializer deserialize readonly fields?
body: <p>A <code>DataContractSerializer</code> will happily deserialize this class, including the readonly field:</p>
  
  <pre><code>[DataContract]
  public class A
  {
      public A(int rof) =&gt; Rof = rof;
  
      [DataMember]
      private readonly int Rof;
  }
  </code></pre>
  
  <p>How does it do that? It has a reputation for being fast so I assume it doesn't use <code>FieldInfo.SetValue()</code>, does it?</p>
  
  <p><code>Expression.Assign()</code> doesn't seem to work, nor does emitting <code>Stfld</code>.</p>