无法从C#ASP.NET中的类调用方法

时间:2017-06-29 13:54:43

标签: c#

我开发了以下课程:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace ESROWCFData
{

 public class ESROWFCData
 {
    public string GetNCAMSData()
     {
        //int iOffset = 0, iTake = 0;
        string strOffset = "iOffset", strTake = "iTake";

        string strNCAMS = "SELECT * FROM[HRO_REPORTS].[dbo].NCAMS WHERE DATEPART(YEAR, VisitStartDate) = DATEPART(YEAR, GetDate()) ORDER BY VisitorID OFFSET " + strOffset + " rows fetch next " + strTake + " rows only";

        return strNCAMS;
     }
 }
}

并在我的主程序中包含了using ESROWCFData;语句,但是当我尝试调用GetNCAMSData()函数时它没有显示,我得到它不存在的错误。我显然做错了什么,但我看不出它是什么。

3 个答案:

答案 0 :(得分:2)

这里有两种选择。您可以将方法设置为静态,这样您就可以通过将签名更改为以下内容来调用它而无需创建类的实例:

public static string GetNCAMSData()

然后这样称呼:

var result = ESROWFCData.GetNCAMSData()

或者您可以创建该类的新实例,然后将其调出,如下所示

var instance = new ESROWFCData(); 
var result = instance.GetNCAMSData()

答案 1 :(得分:1)

首先必须创建ESROWFCData类的实例:

ESROWFCData data = new ESROWFCData();

然后使用它:

string s = data.GetNCAMSData();

答案 2 :(得分:0)

首先,您的命名空间和类名是相同的:

namespace ESROWCFData
{
    public class ESROWFCData
    {
        ...

因此,即使你想在外面使用这个类,你也必须使用完整的类型名称:

ESROWCFData.ESROWCFData data = new ESROWCFData.ESROWCFData();

如果您尝试使用它,请执行以下操作:

ESROWCFData data = new ESROWCFData();

编译器因为该命名空间名称而感到困惑 考虑名称空间或类的名称更改以解决该问题。 More about that issue

另一个问题是(我们不太了解的那个)你是如何尝试调用该对象的方法的。如果您想静态使用它们,请将其标记为静态:

namespace ESROWCFData
{
    public class ESROWCFData
    {
        public static string GetNCAMSData()
        {
            ...

您可以这样称呼它们:ESWROWCFData.ESWROWCFData.GetNCAMSData()