Yes, koriolis's method is best, not even that hard to impelment. This is actually how .net does it - two methods per property and a bit of metadata defining the property.
A practical example of private members is in a class i'm working right now - I've got a Paused field in my main game engine class. However I want the user to use the PAuse() and UnPause() methods because otherwise delta timing will get very messed up as it will think that the amount of time it was paused was one frame, so everything would shoot off in different directions very,very fast. With private fields the user would be forced to use the methods, which would properly reset the delta timing vars. With Properties it would actually look the same way as the user wants it to.
A practical example of private members is in a class i'm working right now - I've got a Paused field in my main game engine class. However I want the user to use the PAuse() and UnPause() methods because otherwise delta timing will get very messed up as it will think that the amount of time it was paused was one frame, so everything would shoot off in different directions very,very fast. With private fields the user would be forced to use the methods, which would properly reset the delta timing vars. With Properties it would actually look the same way as the user wants it to.