Одним из интересных аспектов методов расширения в .NET является тот факт, что вы можете применять их к интерфейсам. Мне кажется хорошим, что я могу определить функциональность рядом с интерфейсом, не определяя абстрактный класс, который загромождает сборку.
Я знаю, что абстрактные классы не устарели или что-то еще, но как вы относитесь к использованию этого побочного эффекта в вашем коде?
Пример:
public static class IUserExtensions
{
public static bool IsCurrentUser(this IUser user)
{
return (HttpContext.Current.User != null &&
HttpContext.Current.User.Identity.Name == user.ID.ToString());
}
}
public interface IUser {
int ID { get; set; }
}