Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
public static class DogCater
{
public static void Bite(Dog dog, Cat cat);
}
public static class DogExtensions
{
public static void Bite(this Dog dog, Cat cat);
}
Copy Source | Copy HTML
- public static class Extensions
- {
- public static bool IsNullOrEmpty(this string str)
- {
- return string.IsNullOrEmpty(str);
- }
- }
-
- class Program
- {
- public static void Main()
- {
- string userName = GetSomeValueFromDB("UsersTable", "UserName");
- if (userName.IsNullOrEmpty())
- {
- Console.WriteLine("User name is empty");
- }
- }
- }
bool? test = null;
var result = test.HasValue;
Нарушается один из основополагающих принципов ООП — инкапсуляция.
Непонятно, где находятся различные методы расширения, предназначенные для одного и того же класса. Непонятно, как их подключать.
можно придумать ещё тысячу доводов
Зачем выдумывать свой пример, если есть существующие, например, тот же Linq. Как бы вы его перепели статическими методами и во что бы превратились цепочки вызовов list.Where(…).Where(…).Take(…).Sort(…)…?
У нас, например, расширение IsDbNull для Object находится в файле +System\Data\ObjectExtensions.cs и пространстве имен System.Data. Очень удобно и прозрачно.
Extension methods: stop the madness!