我在Web表单应用程序中有一个静态页面方法,我想从它调用私有类级变量的方法,如下所示。我正在使用jQuery来调用页面方法。
private readonly ICatalogBLL _catalogBLL = new CatalogBLL();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
_catalogBLL.GetSomething();
}
}
[WebMethod]
public static UpdateSomething(int i)
{
//Want to do as below. But can't call it from a static method.
_catalogBLL.UpdateSomething();
}
更新
如果我按照约翰·桑德斯的说法调用它,它是否会对来自不同用户的请求使用相同的实例,因为它在静态方法中?
答案 0 :(得分:4)
你做不到。页面方法是静态的。您的_catalogBLL
是实例成员。
但是,由于您在每个请求中都创建了CatalogBLL
的新实例,为什么不再这样做呢?
[WebMethod]
public static UpdateSomething(int i)
{
CatalogBLL catalogBLL = new CatalogBLL();
catalogBLL.UpdateSomething();
}
答案 1 :(得分:1)
你不能打电话,因为pagemethods是静态的......
静态方法只是与其包含类的任何实例解除关联的方法。更常见的替代方法是实例方法,该方法的结果取决于它所属的类的特定实例的状态。
看看John saunder的回答..