Вы используете глобальное, всеобъемлющее пространство имен для всех Ваших дополнительных методов, или Вы помещаете дополнительные методы в то же пространство имен как класс (классы), который они расширяют?
Или Вы используете некоторый другой метод, как приложение или определенное для библиотеки пространство имен?
Я спрашиваю, потому что у меня есть потребность расшириться System.Security.Principal.IIdentity
, и вставление дополнительного метода System.Security.Principal
пространство имен, кажется, имеет смысл, но я никогда не видел сделанный этот путь.
Я бы рекомендовал поместить все ваши методы расширения в одно пространство имен (кстати, это то же самое, что Microsoft сделала с Linq, поместив их в одном классе Extensions внутри пространства имен System.Linq).
Поскольку Visual Studio не дает подсказок относительно того, как найти метод расширения, который вы хотите использовать, он уменьшает путаницу, запоминая только одно пространство имен.
Если это методы расширения, используемые во всем решении (например, более 60% классов), я помещаю их в базовое пространство имен решения (поскольку они будет автоматически импортироваться, находясь в родительском пространстве имен, без импорта общих вещей каждый раз).
В этой категории есть такие вещи, как:
.IsNullOrEmpty (это строковое значение)
и .HasValue (это строковое значение)
Однако, если они очень специфичны и редко используются, я поместите их в пространство имен BaseNamepace.Extensions
, чтобы их нужно было вручную импортировать и не отображать в intellisense, загромождая вещи повсюду.
Поместите ваши расширения в то же пространство имен, что и классы, которые они расширяют. Таким образом, когда вы используете класс, вам будут доступны расширения.
Кроме того, Microsoft говорит следующее о методах расширения:
В общем, мы рекомендуем вам реализовывать методы расширения экономно и только тогда, когда это необходимо. Когда возможно, клиентский код, который должен расширять существующий тип, должен делать это, создавая новый тип, производный от существующего типа.
Для получения дополнительной информации о методах расширения см. страницу MSDN о методах расширения.