Можно ли расширить пространство имен.net Framework так же, как можно расширить класс.net Framework?

Можно расширить класс как строку (см. http://www.c-sharpcorner.com/uploadfile/mgold/extendingstringclass03162008132109pm/extendingstringclass.aspx), есть ли способ аналогичным образом расширить System.Web, например, добавив наши собственные классы в этом пространстве имен?

3 ответа

Решение

Конечно. Попробуйте что-то вроде этого:

namespace System.Web
{
   public class ThisIsMyAdditionToSystemWeb
   {
   }
}

Но очевидно, что это ничего не добавит к фактическим сборкам.Net, проекты, которые хотят использовать ваше "расширение", должны будут ссылаться на вашу сборку.

Да, конечно, пространство имен не привязано к какой-либо конкретной сборке. В противном случае это отличный способ запутать пользователя ваших классов за пределами извлекаемой надежды. И сильно обескураженный Microsoft, они утверждают, что и "Microsoft", и "Система" принадлежат им. С симпатией, если какое-то будущее обновление.NET будет иметь имя пространства имен, которое будет совпадать с вашим.

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

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

Другие вопросы по тегам