title: Is it possible to create an immutable property on a domain model?
body: <p>We have a a number of logical domain objects that all reside in the same physical database table <code>WorkStep</code>. A simple sample of the metadata in the sql table is
  <code>ID |NAME| TYPE</code>, such that <code>TYPE</code> is a FK to a table that defines the types possible.   However, once selected from the database each row might represent a different domain model, with VERY different business rules that must be applied. The business rule I am working with right now is that once created, the <code>WorkStepType</code> property one of these objects can <strong>NEVER</strong> change.  SO, any call to that would cause this this to change would be a very bad thing.</p>
  
  <p>So, is it possible to make an object that can be constructed via add-ons like automapper, and dapper, that can have a property set once. and never changed? Also, the types can not be cast to each other.  </p>
  
  <p>I haven't tried much, I'm not even sure it is possible to do this without hacky code </p>