If I have a class namespaceX.classA which uses namespaceX.classB is it possible to customise/overide/extend classB without breaking ClassA by using the same namespace (?) and class name? If so please could you explain how I go about doing this?
Example extend by adding methods to ColumnHeaderCollection without breaking ListView
Maybe. It depends on what you want to do and if you can modify class B.
Have a look at Extension Methods and Partial Classes.
Extension Methods let you create static methods in another static class (e.g. ClassBExtensions) that let you call them as if they were on ClassB. However you will not have access to any private or protected members in the extended class.
Partial Classes lets you add members directly to the class, but you need to be able to modify the source for ClassB since it needs to be declared partial in both places. Partial is really just a way to split a class definition into multiple files.
It sounds like you want an extension method.
You can then call it like: