Где я могу разместить объявление делегата С# в собственном файле?

По привычке я склонен класть классы/структуры/перечисления в отдельные файлы, когда они не вложены.

Для делегатов кажется излишним создание отдельного файла для одного лайнера:

public delegate string MyDelegateThatIsNotNestedInAnyClass ( string par );

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

Ответы

Ответ 1

Я склонен помещать каждый тип в отдельный файл кода. Это поможет вам перемещаться в обозревателе решений, хотя ReSharper работает с " Go To File ".

alt text
(источник: jetbrains.com)

и " Перейти к типу ":

alt text
(источник: jetbrains.com)

Ответ 2

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

Если я точно знаю, что только один класс реализует функцию делегата, я вставляю его в класс реализации.

Ответ 3

Обычно я просто использую:

Func<string, string>

в эти дни

Ответ 4

Я лично добавляю его перед близким определением класса. Я использую пространства имен, хотя, поэтому я не загрязняю!

Ответ 5

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

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

Ответ 6

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