.netidisposableautomatic-properties

Implementing Disposable pattern correctly - auto-implemented properties


One of the rules for implementing the Dispose method says:

Throw an ObjectDisposedException from instance methods on this type (other than Dispose) when resources are already disposed. This rule does not apply to the Dispose method because it should be callable multiple times without throwing an exception.

See: http://msdn.microsoft.com/en-us/library/b1yfkh5e.aspx

Does this mean that if I want to implement properties correctly, I cannot use auto-implemented properties? Do I need properties that implement it like this one?

private bool _property; 
public bool Property
{
    get
    {
       if(disposed) throw new ObjectDisposedException("MyClass");
       return _property;
    }
    set
    {
       if(disposed) throw new ObjectDisposedException("MyClass");
       _property=value;
    }
}

Solution

  • Generally, properties should act like fields (little or no computation, return the same value over multiple calls if no other state has changed), so they don't need the full dispose check, but you should put checks on defined public methods in your class.