title: $type property automatically generated when migrated to cosmos db SDK v3 .NET
body: <p>Kinda new to the .NET and have the task of migrating cosmos db v2 sdk to v3.</p>
  <p>I have noticed when using V3 sdk of .NET, every document created or updated has this default property of <code>$type</code>. Example below.</p>
  <p>I am not sure what is that property? Is there a way to remove it?</p>
  <p>After in v3 sdk:</p>
  <pre><code>&quot;DataSample1&quot;: {
      &quot;0&quot;: 1,
      &quot;$type&quot;: &quot;System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]], System.Private.CoreLib&quot;
  }
  </code></pre>
  <p>Before in v2 sdk:</p>
  <pre><code>&quot;DataSample1&quot;: {
      &quot;0&quot;: 1
  },
  </code></pre>
  <p>If anyone could help me understand what is that <strong>&quot;$type&quot;</strong> property in each document I create.</p>
  <p>Here is the base document class.</p>
  <pre><code>public class BaseCosmosDBDocument : Document
      {
          /// &lt;summary&gt;
          /// Initializes a new instance of the &lt;see cref=&quot;BaseCosmosDBDocument&quot;/&gt; class.
          /// Keep default constructor here, preventing from cosmos document deserializing failure
          /// &lt;/summary&gt;
          public BaseCosmosDBDocument()
              : base()
          {
          }
  
          /// &lt;summary&gt;
          /// Initializes a new instance of the &lt;see cref=&quot;BaseCosmosDBDocument&quot;/&gt; class.
          /// &lt;/summary&gt;
          /// &lt;param name=&quot;createdDateTime&quot;&gt;created date time of document&lt;/param&gt;
          [JsonConstructor]
          public BaseCosmosDBDocument(DateTimeOffset createdDateTime)
              : base()
          {
              this.CreatedDateTime = createdDateTime;
          }
  
          /// &lt;summary&gt;
          /// Gets or sets created Date Time
          /// &lt;/summary&gt;
          [JsonProperty(PropertyName = &quot;CreatedDateTime&quot;)]
          public DateTimeOffset CreatedDateTime { get; set; }
  
          /// &lt;summary&gt;
          /// Deserializes this base class CosmosDB document to the specified subclass type.
          /// Note: Property bag should be initialized with subclass values.
          /// &lt;/summary&gt;
          /// &lt;typeparam name=&quot;T&quot;&gt;The type this base update policy should deserialize to&lt;/typeparam&gt;
          /// &lt;returns&gt;This update policy deserialized to the subclass type&lt;/returns&gt;
          public T ReadAsDocumentSubclass&lt;T&gt;() where T : BaseCosmosDBDocument
          {
              using (var stream = new MemoryStream())
              using (var reader = new StreamReader(stream))
              {
                  this.SaveTo(stream);
                  stream.Position = 0;
                  return JsonConvert.DeserializeObject&lt;T&gt;(reader.ReadToEnd());
              }
          }
      }
  </code></pre>