views:

73

answers:

1

One of the rules for implementing 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 it mean, that if I want to implement properties correctly, I can not use auto-implemented properties? Do I need properties 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;
        }
    }
+2  A: 

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.

thecoop
I agree. When you're just returning primitive values, such as integers, booleans, Color: don't bother doing a full dispose check. However, when that property returns some object that cannot reasonably be used after it is disposed, do a full check.
Steven