Every once in a while, we have no choice but to write “dangerous” code. The type of code that, when used improperly, can wreak all sorts of havoc on the system. Purging audit trail records, fast-swapping statuses, or, like in today’s example, code that toggles an object’s "IsUpdated" property regardless of whether that object has been updated.
It’s a good idea to protect such code, perhaps using access specifiers like “private” or “internal” or even runtime-enforced security like the System.Security.CodeAccessPermission namespace. Or, one could go the route of Riaan Hanekom's predecessor and use some sort of… password protection?
/// <summary> /// Overrides the IsUpdated value. Used to set the value to false /// after properties have been populated by the constructor. /// </summary> /// <param name="Password"> /// The password used to verify authorization to execute the method. /// </param> /// <param name="status">The new value for IsUpdated.</param> public void OverrideIsUpdated(String password, bool status) { if (password != "P#$$word#") { throw new ArgumentException("Invalid password specified!" + " This method is for internal use only!", "Password"); } _IsUpdated = status; ... snip ... }