【问题标题】:Calling non-static method inside static web-method在静态 Web 方法中调用非静态方法
【发布时间】:2015-08-13 12:39:10
【问题描述】:

在 asp.net 的静态 Web 方法中如何调用非静态方法。

【问题讨论】:

  • 简短的回答是你不能,把你想调用的方法也设为静态。
  • 你需要一个对象引用才能在静态方法中调用非静态方法
  • 顺便说一下,将您的工作和错误消息显示为文本,而不是图像。
  • string stResponse = a class 我觉得恶心。
  • 引用实例调用实例方法。与在任何系统中的任何位置调用任何实例方法的方式相同。

标签: c# asp.net ajax json.net


【解决方案1】:

创建一个您希望调用该方法的类的实例。

【讨论】:

  • 由于这是一个 web 方法,类的实例是定义 web 方法的 asp.net web 表单页面。手动实例化 web 表单页面类可能没有用。
  • 我没有说这个类必须是 web 表单页面,例如可以将它重构为一个单独的类。
【解决方案2】:

首先您需要了解“静态”和“实例”之间的区别。从概念上讲,这对于您尝试执行的操作意味着什么。

实例操作是在对象的特定实例上执行的操作。落入过度使用的汽车类比...如果您要对您的汽车执行操作(驾驶它、在油箱中加油、撞车等),那么您将在那辆特定的汽车上执行该操作。不是在汽车的一般概念上,不是在所有汽车上,不是在所有同类型的汽车上,甚至不是在它旁边的另一辆完全相同的汽车上。就在那辆车上。

静态操作与特定实例无关。它不适用于物理构造。对于汽车,您可能想要执行诸如查找特定品牌和型号的消费者评级之类的操作。您不是在查找特定汽车的评级。两辆或更多辆足够相似的汽车将具有相同的评级。您只是在查找有关汽车概念的信息,而不考虑汽车的任何特定物理实例。

现在将此概念应用于代码中的静态和实例操作...

在静态操作中,您处于类的一般概念的上下文中。没有具体的例子。那么,从概念上讲,您如何调用实例操作呢? (当您查看汽车的消费者评分时,您无法“驾驶”消费者评分。您需要一辆真正的汽车才能驾驶。)

因此,关于您的代码,您有多种不同的方法:

  1. 也许您需要在静态操作中创建一个实例并对该实例执行实例操作。
  2. 可能使用代码需要为静态操作提供现有实例,以便它可以使用该实例。
  3. 也许实例操作在逻辑上应该是静态的。
  4. 也许静态操作在逻辑上应该是基于实例的。

我们不知道哪些选项最有意义。如果您提供一些有意义的上下文,我们可以提供帮助。但是您需要更好地了解您正在建模的系统以及您的操作。

【讨论】:

    【解决方案3】:

    创建非静态方法的实例

    例如

    public class ABC
    {
        public void AB()
        {
        }
    
        public static void PQ()
        {
             ABC obj= new ABC ();
             obj.AB();
        }
    }
    

    【讨论】:

    • 你可以在图片中找到它。我不能在这里发送,因为它超过了字符。
    • 你能解释一下 UploadEra(loEra,uid) 吗?它到底是什么工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多