С появлением методов расширения абстрактные классы стали менее привлекательными? - PullRequest
8 голосов
/ 16 марта 2009

Одним из интересных аспектов методов расширения в .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; }
}

Ответы [ 11 ]

0 голосов
/ 16 марта 2009

Я не использовал ничего из .NET 2.0, поэтому понятия не имел, что вы можете это сделать. Кажется странным для меня; интерфейсы не для реализации. Я бы нашел это запутанным. Кроме того, показанный вами пример - это класс, а не интерфейс.

...