Class.Class vs Namespace.Class para bibliotecas de clase de uso general de nivel superior?

¿Cuál es más aceptable (mejor práctica) ?:

namespace NP
   public static class IO
   public static class Xml
   ...
   // extension methods

using NP;

IO.GetAvailableResources ();

vs

public static class NP
   public static class IO
   public static class Xml
   ...
   // extension methods

NP.IO.GetAvailableResources ();

También por#2, el tamaño del código se gestiona teniendo clases parciales para que cada clase anidada pueda estar en un archivo separado, lo mismo para los métodos de extensión (excepto que no hay una clase anidada para ellos)

yo prefiero#2, por un par de razones, como poder usar nombres de tipo que ya se usan comúnmente, comoIO, que no quiero reemplazar o colisionar.

¿Cuál prefieres? ¿Algún pros y contras para cada uno? ¿Cuál es la mejor práctica para este caso?

EDITAR: ¿También habría una diferencia de rendimiento entre los dos?

Respuestas a la pregunta(6)

Su respuesta a la pregunta