2016-01-03 62 views
1

當試圖編譯我的C#Windows應用程序我收到以下錯誤:「functionname」不存在當前上下文存在名稱

The name 'GetActiveLB' does not exist in the current context 

下面是調用該函數的代碼:

using F5LTMMaintenance; 

...... 

    private void btnLBSetA_Click(object sender, EventArgs e) 
    { 

     List<string> range = GetActiveLB(); 
     foreach (string item in range) 
     { 
      // Do something with item 
     } 
    } 

然後,我有以下類:

namespace F5LTMMaintenance 
{ 
    public class F5LTM<T> 
    { 
     public List<T> GetActiveLB() 
     { 
      var client = new RestClient("mylb.domain.local"); 
      var request = new RestRequest("mgmt/tm/cm/failover-status", Method.GET); 
      var queryResult = client.Execute<List<T>>(request).Data; 
      return queryResult == null ? new List<T>() : queryResult; 
     } 
    } 
} 

的GetActiveLB功能確實存在,它是一種公共福所以爲什麼我得到這個錯誤?任何幫助,將不勝感激。

回答

2

它用的F5LTM<T>實例中使用。

例如爲:

var f5ltm = new F5LTM<string>(); 
List<string> range = f5ltm.GetActiveLB(); 

另外,如果你把它聲明爲static這樣的:

public class F5LTM //not generic here 
{ 
    public static List<T> GetActiveLB<T>() //generic here and static 
    { 
     //unchanged 
    } 
} 

用法:

List<string> range = F5LTM.GetActiveLB<string>(); 

或者與C# 6 using static syntax

using static F5LTMMaintenance.F5LTM; //at top of file 

List<string> range = GetActiveLB<string>(); 

這是儘可能接近您發佈的代碼。

+0

謝謝 - 事後看來這是有道理的。我只是看不到它。非常感謝! – Brad

+0

@Rahul好點,我的意思是指出,但忘了。 – weston

2

是的,它是一個公共函數,但它定義在與調用事件處理程序類不同的類中。您需要創建F5LTM<T>類的實例,該實例調用你的方法GetActiveLB()而不是像

private void btnLBSetA_Click(object sender, EventArgs e) 
    { 
     F5LTM<Type> test = new F5LTM<Type>(); 
     List<string> range = test.GetActiveLB(); 
2

您將需要一個F5LTM類(例如typF5LTM)的實例,以便能夠撥打typF5LTM.GetActiveLB()。或者您需要使GetActiveLB具有靜態功能,以便能夠在沒有實例的情況下調用它F5LTM.GetActiveLB();

1

正如另一張海報指出的那樣,您必須在類上調用該方法。

F5LTM<string> listItems = new F5LTM<string>(); 
List<string> range = listItems.GetActiveLB(); 
+0

因此,整個推理和解決方案都集中在一個帖子中。我想我可以簡單地給出代碼,並沒有提到問題的原因,但這將是一個不完整和無益的職位。 雖然你的回答比較透徹,但我提到的帖子(只是給出了沒有任何說明性代碼的原因)已被刪除或編輯爲包含示例代碼。 – Hamish

+0

我看得夠公平了,是的,當時還有另一個沒有示例代碼的帖子,但我其實認爲你是指我,因爲我在3分鐘之前發佈了幾乎相同的代碼,但它有時會錯過。 – weston

+0

哦,歡迎哈米什,我看到這是你在網站上的第一天!不是故意的! – weston

相關問題