我有一个扩展方法如下:
public static class PageExtensions
{
public static int GetUserId(this Page targetPage)
{
var user = Membership.GetUser(targetPage.User.Identity.Name);
return (int)user.ProviderUserKey;
}
}
现在在页面中我需要在静态WebMethod中使用此方法,因此我在PageExtensions中添加了另一个“扩展方法”:
public static int GetUserId()
{
return (int)Membership.GetUser(HttpContext.Current.User.Identity.Name).ProviderUserKey;
}
我在WebMethod中将其称为:
PageExtensions.GetUserId()
这是一种很好的做事方式吗?还有其他方法吗?
答案 0 :(得分:3)
不,你还没有创建另一个扩展方法 - 你已经创建了一个普通的静态方法。
我个人将这些内容分成“扩展”以外的类 - 它显然不是扩展方法。对于静态类来说,使用扩展方法和非扩展方法(例如Enumerable
)并不是太糟糕,但在这种情况下你不应该将它称为Extensions
。
您可以在HttpContext
上将其更改为真正的扩展方法,当然:
public static int GetUserId(this HttpContext context)
{
return (int)Membership.GetUser(context.User.Identity.Name).ProviderUserKey;
}
然后将其称为:
int userId = HttpContext.Current.GetUserId();