2010-10-04 4 views
0

Есть ли способ в C#, чтобы убрать следующую декларацию класса?C# Вложенные классы, очистка декларации

namespace Application.Namespace 
{ 
    public class MasterClass 
    { 
     public class FlyingSaucer 
     { 
      public class Rotator 
      { 
       public class Cube 
       { 

Сохранение структуры классов, просто очистка декларации.

+0

Вопрос не ясен. – Nayan

+0

Хм мне понятно, как убрать декларацию. 1 строка Cube или удалить сложность вложенности. – RvdK

+0

спасибо, мне нравится обратная связь уже и, честно говоря, я думаю, что мы будем расследовать, почему нам нужна такая сложность вложенности. – Guamez

ответ

2

Нет - это уже довольно аккуратно, учитывая, что у вас есть 4 уровня гнездования.

Но вы почти наверняка не должны иметь 4 уровня гнездования для начала. Почему вы хотите это сделать? У вас есть класс с именем subClass1 которого не является подкласса нормального значения (то есть полученным из другого конкретного класса;. subClass1 только происходят от object)

Вложенных классов довольно редко - я не думаю, что я видел даже три уровня гнездования, не говоря уже о четырех. Почему вы думаете, что это хорошая идея?

+0

спасибо за ответ Jon. Не беспокойтесь о самих именах классов, это было просто написано, чтобы проиллюстрировать мою точку зрения. Что касается того, почему у нас есть четыре уровня гнездования ... ummmm хороший вопрос! – Guamez

+0

Зачем гнездиться на четырех уровнях как «плохая практика»? – Guamez

+0

@Guamez. Когда вложенные классы являются общедоступными, так как они здесь, это синтаксически неудобно для вызывающего кода, поскольку должен использоваться полный путь из самого внешнего класса, поскольку нельзя объявить его как пространство имен (это «пространство имен» в .NET смысл слова, имена внешнего класса также являются «пространством имен» в общем смысле). Это также плохой запах, так как вы, возможно, в конечном итоге заставите кого-то думать в терминах внешнего класса, даже если это не их проблема в момент времени. С частными классами его менее неудобно, и я, конечно, ушел как минимум на 3 уровня в прошлом ... –

0

похоже, что вы вводите в заблуждение наследование подклассами.

дополнительный класс обычно довольно редкий.

+0

Это не дает ответа на вопрос. Чтобы критиковать или просить разъяснения у автора, оставьте комментарий ниже их сообщения. –

+0

На самом деле, да, если бы я заметил, что эти примеры были более специализированной версией предыдущей ... вы когда-либо видели вращающийся кубик борговской летающей тарелки? –

1

Существуют ли какие-либо отношения между

FlyingSaucer -> Rotator -> Cube, я имею в виду это типичный пример Сдерживание.

FlyingSaucer содержит ротатор и ротатор, содержащий куб.

так что если это так, вы можете рассмотреть возможность использования композиции, создав свойства Rotator и Cube в FlyingSaucer.

Вы можете вставлять эти зависимости при создании объекта FlyingSaucer. Это устранит очень глубокое вложение в ваши классы, и я думаю, вам, вероятно, нужно получить доступ к объектам FlyingSaucer, Rotator, Cube из вашего мастер-класса.

так что используйте здесь композицию, которая действительно упростит и упростит вашу иерархию классов.

Смежные вопросы