Class.Class vs Namespace.Class para bibliotecas de classes de uso geral de nível superior?

Qual é o mais aceitável (prática recomendada) ?:

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 ();

Também para#2, o tamanho do código é gerenciado tendo classes parciais para que cada classe aninhada possa estar em um arquivo separado, o mesmo para métodos de extensão (exceto que não há classe aninhada para eles)

eu prefiro#2, por alguns motivos, como poder usar nomes de tipos que já são comumente usados, comoIO, que não quero substituir ou colidir.

Qual você prefere? Quaisquer prós e contras de cada um? Qual é a melhor prática para este caso?

EDIT: Também haveria uma diferença de desempenho entre os dois?

questionAnswers(6)

yourAnswerToTheQuestion