Практическое использование частичного ключевого слова в C # - PullRequest
8 голосов
/ 05 марта 2009

Я знаю, что это позволяет Visual Studio отделить код пользовательского интерфейса WinForms от событий пользовательского интерфейса и т. Д. Но есть ли для него практическое применение?

Ответы [ 9 ]

16 голосов
/ 05 марта 2009

Частичное ключевое слово обычно используется в утилитах генерации кода, чтобы позволить разработчикам добавлять дополнительные функции в сгенерированный код, не опасаясь, что этот код будет удален, если код будет сгенерирован снова.

В C # 3 ключевое слово part может применяться к методам, чтобы позволить пользователям сгенерированного кода заполнять пробелы, оставленные генератором. Например, дизайнер Linq To Sql предоставляет частичные методы, которые позволяют вам добавлять логику в классы, которые фреймворк вызовет, если будет реализован. Преимущество здесь состоит в том, что компилятор C # полностью удаляет неосуществленные частичные методы, поэтому нет никакого снижения производительности на всех , если они не реализованы.

Частичные классы также можно использовать для организации очень больших классов в отдельные файлы кода, хотя этот вид использования обычно является признаком того, что ваши классы слишком велики и принимают на себя слишком много обязанностей.

2 голосов
/ 05 марта 2009

Я нашел одно использование для кода, который вы, возможно, не хотите использовать в производственном коде, таком как код трассировки или кодирования dev. Вы можете поместить это в частичный класс, а затем, когда вы делаете производственную сборку, вы просто строите ее без включенных партиалов, и компилятор автоматически удаляет любые вызовы тех партиалов, которые были исключены.

2 голосов
/ 05 марта 2009

Лучшее использование для частичного ключевого слова, которое я могу придумать, это вложенные классы. Без ключевого слова частичного все вложенные классы должны находиться в том же файле кода, что и содержащий класс.

1 голос
/ 05 марта 2009

В VB вы можете использовать его для отделения «нормального» кода от кода, который требует позднего связывания через «Option Strict Off».

В C # я использую его только для необычно больших классов.

1 голос
/ 05 марта 2009

Я использую его для разбиения вспомогательных классов, где некоторым методам нужно много кода. Это довольно простой способ сохранения читабельности, поскольку каждый файл имеет дело только с частью функциональности класса.

0 голосов
/ 05 марта 2009

Я использую частичные классы, чтобы уменьшить боль при слиянии с контролем версий, когда я знаю, что над одним классом будет работать несколько разработчиков. Например, мы часто разделяем наш класс DAL на несколько файлов частичных классов. Если вы не разместите их в разных файлах, легко получить конфликты слияния, которые требуют времени для исправления при включении в версию ctl.

Когда развитие становится менее хаотичным, когда класс приближается к завершению, мы избавляемся от частичных файлов. Мы просто используем его, чтобы облегчить проблемы с VC / mulit-developer

0 голосов
/ 05 марта 2009

WPF широко использует частичные классы. XAML создает частичный класс, к которому вы можете добавить.

0 голосов
/ 05 марта 2009

Я использую частичные классы и методы все время с Linq2Sql. В противном случае я никогда не использовал его ни для чего, кроме классов UI / Code-behind.

Одна из замечательных вещей, которые мне нравятся в частичных классах в linq2sql, это то, что вы можете иметь частичный класс, наследующий интерфейс, и он отобразит интерфейс на сгенерированный класс. Это замечательно, если у вас более одного поставщика данных и вы все еще хотите использовать одни и те же интерфейсы для всех классов доступа к данным.

0 голосов
/ 05 марта 2009

Конструктор LINQ to SQL широко использует его для разделения пользовательских поведений (частичных методов) за пределы класса отображения.
Одним словом, его основное предназначение - для генераторов кода.
Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...