“functionname”这个名称在当前上下文中不存在

时间:2016-01-03 13:56:28

标签: c# function

在尝试编译我的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函数确实存在,它是一个公共函数,为什么我会收到此错误?任何帮助,将不胜感激。

4 个答案:

答案 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>();

C# 6 using static syntax

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