从静态方法调用和访问非静态方法

时间:2017-09-20 04:00:25

标签: c# asp.net

想要从asp.net c#中的静态方法访问非静态方法。

private void nonstaicMethod(string var1)
{
  //accessing the view/panel from the current page
  //or using 'Response' to download a file
}
[System.Web.Services.WebMethod(EnableSession = true)]
public static void method1(string Id)
{
  CurrentPageName cp=new CurrentPageName();
  cp.nonstaicMethod();
}

对于下载文件,我得到response is not available in this context。我试过了,

 <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" />

 `HttpContext context = HttpContext.Current`;
当我通过网络时,我尝试了很多方法。什么都行不通。 当我尝试从当前页面调用非静态并访问视图/面板时,我得到了Object reference not set to an instance of an object.

1 个答案:

答案 0 :(得分:0)

将行为置于页面中的某些内容并尝试从其他位置调用它看起来非常错误。也许它应该在另一个类中,并在需要时将Page实例作为依赖项。在这里,整个模式尖叫有一些错误,即使在可能的情况下我也会避免它。但是在代表的帮助下,同样的事情可以实现。

public class MyClass
    {

    private static Action NonStaticDelegate;

    public void NonStaticMethod()
    {
        Console.WriteLine("Non-Static!");
    }

    public static void CaptureDelegate()
    {
        MyClass temp = new MyClass();
        MyClass.NonStaticDelegate = new Action(temp.NonStaticMethod);
    }

    public static void RunNonStaticMethod()
    {
        if (MyClass.NonStaticDelegate != null)
        {
            // This will run the non-static method.
            //  Note that you still needed to create an instance beforehand
            MyClass.NonStaticDelegate();
        }
    }
}