Give Message a public getter but protected setter, so that only subclasses (and the DataContractSerializer, because it cheats 🙂 may modify the value.
Give Message a public getter but protected setter, so that only subclasses (and the DataContractSerializer, because it cheats 🙂 may modify the value.