My brother Peter, who is a dotNet programmer commented on the issue and came up with a useful principle...
Don't do it.
Or more politely... When you think you need to inherit, you pobably don't.
That is probably a good best practice approach - I need to post about best practices and why I say it's a good best practice approach. The problem is that inheritance is abused and the naive rule of "is-a", "has-a" is responsible for to many situations where inheritance is not the answer - composition would have been more than adequate and without the constraints and complexity that inheritance introduces.
It's a little like threading. If you can do it in one thread, then do it in one thread - you don't want the concurrency problems.