I don't think you can, quite.
As a work-around, create your own class that implements IList, contains a
private collection, and which for the readonly Item() property, returns not
an element from the collection, but a clone of it.
That way, at least any changes made will be changes to the (discarded)
clone, and not to the actual elements in the collection.