Simple rule to follow: if you create* it, it's your responsibility to see that it gets disposed. Conversely, if a method (be it a constructor or otherwise) does not create the disposable object, I would not expect for it to dispose of it. (*Creation includes invoking methods that return an IDisposable.)
So given something like
public Foo(SomeDisposable obj) : base(obj) { }
I would expect to see something like
using (SomeDisposable obj = new SomeDisposable())
{
Foo foo = new Foo(obj);
}
And not
Foo foo = new Foo(new SomeDisposable());
If you have a parameter-less constructor for Foo
and you want to call the base constructor with a disposable object, you're in a much trickier position, and that's probably where the rule is coming in trying to protect you. I would say avoid such a position by either coding the base to create and therefore be responsible for the IDisposable or have a 1:1 mapping between constuctors with IDisposable parameters, so that a parameterless Foo doesn't invoke a parameterized base.
But it shouldn't be the method or constructor's job to guess that you are done with the object you passed in, because how is it supposed to know? You could have other uses for it.