2017-06-29 37 views
0

我已經開發了以下類:不能調用從一個類的方法在C#ASP.NET

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()功能它沒有出現,我得到它不存在的錯誤。我顯然做錯了什麼,但我看不到它是什麼。

+4

新ESROWFCData()GetNCAMSData():) –

+0

它在哪裏,你想呼叫你的方法?這是問題。 – pijemcolu

回答

1

你首先必須創建ESROWFCData類的一個實例:

ESROWFCData data = new ESROWFCData(); 

,然後使用它:

string s = data.GetNCAMSData(); 
2

您在這裏有兩種選擇。您可以將該方法靜態的,所以你可以把它無需通過改變簽名是創建類的實例:

public static string GetNCAMSData() 

然後調用它像這樣:

var result = ESROWFCData.GetNCAMSData() 

或者你可以創建這個類的一個新實例,然後調用它關閉,像如下

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

使用靜態修復它,謝謝。 –

+0

輝煌。請接受將問題標記爲已關閉的答案,並允許其他具有類似問題的人也獲得幫助。 @ donald.dougherty –

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()