在尝试编译我的c#windows应用程序时,我收到以下错误:
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函数确实存在,它是一个公共函数,为什么我会收到此错误?任何帮助,将不胜感激。
答案 0 :(得分:2)
是的,它是一个公共函数,但它在与调用事件处理程序类不同的类中定义。您需要创建类F5LTM<T>
的实例,并在该实例上调用您的方法GetActiveLB()
,而不是
private void btnLBSetA_Click(object sender, EventArgs e)
{
F5LTM<Type> test = new F5LTM<Type>();
List<string> range = test.GetActiveLB();
答案 1 :(得分:2)
必须与F5LTM<T>
。
e.g:
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>();
using static F5LTMMaintenance.F5LTM; //at top of file
List<string> range = GetActiveLB<string>();
这与您发布的代码尽可能接近。
答案 2 :(得分:2)
您需要Django-Admin
课程的实例(例如F5LTM
),才能致电typF5LTM
。或者您需要使typF5LTM.GetActiveLB()
成为一个静态函数,以便能够在没有GetActiveLB
答案 3 :(得分:1)
正如另一张海报指出的那样,你必须在课堂上调用该方法。
F5LTM<string> listItems = new F5LTM<string>();
List<string> range = listItems.GetActiveLB();