我有一个扩展方法如下:
public static class PageExtensions
{
public static int GetUserId(this Page targetPage)
{
var user = Membership.GetUser(targetPage.User.Identity.Name);
return (int)user.ProviderUserKey;
}
}
Run Code Online (Sandbox Code Playgroud)
现在在页面中,我需要在静态 WebMethod 中使用此方法,因此我向 PageExtensions 添加了另一个“扩展方法”:
public static int GetUserId()
{
return (int)Membership.GetUser(HttpContext.Current.User.Identity.Name).ProviderUserKey;
}
Run Code Online (Sandbox Code Playgroud)
我在我的 WebMethod 中这样称呼它:
PageExtensions.GetUserId()
Run Code Online (Sandbox Code Playgroud)
这是做事的好方法吗?还有其他方法吗?
不,您还没有创建另一个扩展方法——您已经创建了一个普通的静态方法。
我个人会将它们分成“扩展”以外的一个类——这显然不是一个扩展方法。静态类具有扩展方法和非扩展方法(就像Enumerable那样)并不算太糟糕,但Extensions在这种情况下你不应该调用它。
当然,您可以将其更改为真正的扩展方法HttpContext:
public static int GetUserId(this HttpContext context)
{
return (int)Membership.GetUser(context.User.Identity.Name).ProviderUserKey;
}
Run Code Online (Sandbox Code Playgroud)
然后将其称为:
int userId = HttpContext.Current.GetUserId();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1954 次 |
| 最近记录: |