2016-01-03 32 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

相关问题