Можно ли разбить код на несколько частичных файлов? - PullRequest
7 голосов
/ 27 марта 2012

У меня есть веб-форма .aspx с кодом .aspx.cs. Длина кода составляет около 2000 строк, и доходит до того, что единственный способ легко перемещаться по нему - поместить тонну пробелов между разделами, уменьшить масштаб, чтобы я мог видеть физический вид кода, и затем увеличьте масштаб, где я хочу редактировать. Другими словами, это большая боль. Я хотел бы разбить эту строку 2000 года на разные файлы, которые представляют понятия в коде. Поэтому, когда мне нужно отредактировать некоторые функции на вкладке jquery «Сотрудник» страницы, я могу просто перейти к частичному классу, который содержит только функциональность «Сотрудник».

В меню «Новый элемент» я не могу найти ничего для дополнительного файла code-behind, файла .aspx.cs. Я попытался создать файл .cs, переименовав его в .aspx.cs и присвоив ему то же имя частичного класса - без усилий, я не смог увидеть ни один из методов частичного класса по умолчанию, ни элементы управления в стр.

Я понимаю концепцию, что если ваш "класс", в смысле ООП, такой длинный, он делает слишком много. Что я не понимаю, так это «класс» с точки зрения кода для веб-формы. Форма не может быть разбита на более мелкие формы - пользовательский интерфейс должен быть размещен на одной странице.

Ответы [ 4 ]

13 голосов
/ 27 марта 2012

Вы можете использовать частичные классы . Поэтому добавьте новый файл .cs в свой проект и используйте частичный класс.

Например, если у вас есть следующий Default.aspx.cs файл:

public partial class _Default : System.Web.UI.Page
{
    ... some 2000 lines of code
}

Вы можете добавить другой файл .cs в ваш проект, в котором:

public partial class _Default
{
    ... a subset of the 2000 lines of code could be moved here
        in order to isolate some functionality
}

Очень важно, чтобы этот частичный класс был объявлен в том же пространстве имен, что и исходный класс, и имеет то же имя.

Но учтите, что использование частичных классов скрывает только дерьмо. Это не убирает это. Если вы хотите очистить его, вам придется рассмотреть методы ООП, чтобы разделить функциональность на разные классы. Вы должны слой вашего приложения.

1 голос
/ 20 апреля 2015

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

Пример:

    #region isntances

    public StreamWriter LogFile;
    public FileStream fs;
    string _RunID = Guid.NewGuid().ToString();


    #endregion

Это позволит вам разметить код, чтобы лучше его отслеживать.

Надеюсь, это поможет

1 голос
/ 27 марта 2012

Try;

Ctrl-M, Ctrl-O

с последующим

Ctrl-M, Ctrl-L
1 голос
/ 27 марта 2012

Возможно разделить ваши классы на отдельные файлы, используя частичные классы - см.

http://msdn.microsoft.com/en-us/library/wa80x488%28v=vs.80%29.aspx

Тем не менее, 2000 строк кажутся довольно большими для вашего кода. Рассматривали ли вы извлечение функциональности в различные классы помощников / стратегий, которые приспособлены к конкретным функциям? Таким образом, вместо создания нового частичного класса для функции «Сотрудник», создайте новый класс с тестируемыми вспомогательными и логическими функциями и добавьте ссылку на них из вашего исходного класса?

...