Можно ли расширить пространство имен.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 будет иметь имя пространства имен, которое будет совпадать с вашим.
Пример, связанный в вопросе, использует методы расширения для расширения класса запечатанной строки. Ничто не мешает вам писать методы расширения для любого класса.
И как уже говорили другие, расширение пространства имен так же просто, как объявление этого пространства имен при создании нового объекта. Просто не забудьте учесть последствия, прежде чем сделать это.