I'm looking for a way to allow a property in a C# object to be set once only. It's easy to write the code to do this, but I would rather use a standard mechanism if one exists.
public OneShot<int> SetOnceProperty { get; set; }
What I want to happen is that the property can be set if it is not already set, but throw an exception if it has been set before. It should function like a Nullable value where I can check to see if it has been set or not.
Best Answer
There is direct support for this in the TPL in .NET 4.0;
(edit: the above sentence was written in anticipation of
System.Threading.WriteOnce<T>
which existed in the "preview" bits available at the time, but this seems to have evaporated before the TPL hit RTM/GA)until then just do the check yourself... it isn't many lines, from what I recall...
something like:
Then use, for example: