Я работаю над некоторым устаревшим кодом и сталкиваюсь с тем, о чем я не уверен. У нас есть class y, который объявлен внутри другого class x. class y используется только внутри class x, но мой вопрос в том, почему бы вам не создать отдельный файл класса и не поставить там class y вместо того, чтобы объявить его внутри class x? Разве это не нарушает ООП или это просто вопрос стиля, поскольку он используется только внутри этого класса. Я рефакторинг некоторых из этого кода, и моя первая реакция будет заключаться в том, чтобы отделить class y от него в собственном файле. 
namespace Library
{
   public class x
   {
      // methods, properties, local members of class x
      class y
      {
         // methods, properties, local members of class y
      }
   }
}