Как Вы управляете пространствами имен своих дополнительных методов?

Вы используете глобальное, всеобъемлющее пространство имен для всех Ваших дополнительных методов, или Вы помещаете дополнительные методы в то же пространство имен как класс (классы), который они расширяют?

Или Вы используете некоторый другой метод, как приложение или определенное для библиотеки пространство имен?

Я спрашиваю, потому что у меня есть потребность расшириться System.Security.Principal.IIdentity, и вставление дополнительного метода System.Security.Principal пространство имен, кажется, имеет смысл, но я никогда не видел сделанный этот путь.

17
задан Robert Harvey 26 March 2010 в 03:53
поделиться

3 ответа

Я бы рекомендовал поместить все ваши методы расширения в одно пространство имен (кстати, это то же самое, что Microsoft сделала с Linq, поместив их в одном классе Extensions внутри пространства имен System.Linq).

Поскольку Visual Studio не дает подсказок относительно того, как найти метод расширения, который вы хотите использовать, он уменьшает путаницу, запоминая только одно пространство имен.

8
ответ дан 30 November 2019 в 12:35
поделиться

Если это методы расширения, используемые во всем решении (например, более 60% классов), я помещаю их в базовое пространство имен решения (поскольку они будет автоматически импортироваться, находясь в родительском пространстве имен, без импорта общих вещей каждый раз).

В этой категории есть такие вещи, как:
.IsNullOrEmpty (это строковое значение) и .HasValue (это строковое значение)

Однако, если они очень специфичны и редко используются, я поместите их в пространство имен BaseNamepace.Extensions , чтобы их нужно было вручную импортировать и не отображать в intellisense, загромождая вещи повсюду.

9
ответ дан 30 November 2019 в 12:35
поделиться

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

  • Если вы пишете расширение для Uri, поместите расширение в System.
  • Если это расширение для DataSet, поместите его в System.Data.

Кроме того, Microsoft говорит следующее о методах расширения:

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

Для получения дополнительной информации о методах расширения см. страницу MSDN о методах расширения.

12
ответ дан 30 November 2019 в 12:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: