Наверное, почти каждый .NET-разработчик сталкивался со случаями, когда для удобства кодирования рутинных действий и сокращения boilerplate-кода при работе со стандартными типами данных не хватает возможностей стандартной же библиотеки.
И практически в каждом проекте появляются сборки и пространства имен вида Common, ProjectName.Common и т.д., содержащие дополнения для работы со стандартными типами данных: перечислениями (Enums), Nullable-структурами, строками и коллекциями (перечислениями IEnumerable, массивами, списками и собственно коллекциями).
Как правило, эти дополнения реализуются с помощью механизма extension methods (методов расширения).
Часто можно наблюдать наличие реализаций монад, тоже построенных на механизме методов расширения.
Написание этой статьи инспирировано прочтением давней статьи-перевода Проверки на пустые перечисления и развернувшейся дискуссии к ней.
Статья давняя, но тема по-прежнему актуальная, тем более, что код, похожий на пример из статьи, приходилось встречать в реальной работе от проекта к проекту.
Читать дальше →
Методы расширения для типов стандартной библиотеки .NET
Source: habrahabr
