我一直在考虑使用扩展方法作为抽象基类的替代.扩展方法可以提供默认功能,并且可以通过在派生类中放置相同签名的方法来"覆盖".
我不应该这样做的原因?
另外,如果我有两个具有相同签名的扩展方法,使用哪一个?有没有办法确定优先权?
.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; }
}
Run Code Online (Sandbox Code Playgroud) 我需要在两种技术之间进行比较:使用泛型类型和扩展类型.我不是指一般的比较,我的意思是在这种特殊情况下我需要为一个名为类的类添加一些功能ClassA
使用泛型类型
使用泛型类型(Where T: ClassA)并实现泛型方法
使用扩展方法
使用ClassA添加其扩展方法
public static class Helper
{
public static void MethodOne(this ClassA obj, )
{
//
}
}
Run Code Online (Sandbox Code Playgroud)我需要知道 :
Repository Pattern?例如,在此实现中,为什么我们不向全局类添加扩展方法Entity?