不包含定义,也找不到接受类型为第一个参数的扩展方法

14

我查看了一些解决此问题的方案,但它们似乎与我正在经历的不同。

我尝试调用的方法:

namespace BetfairAPI
{
    public class CBetfairAPI
    {
        public ArrayList placeBets(ArrayList betList, double stakeSize)
        {
            // code to betList maniplulate

            return betList;
        }
    }
}

我正在调用的方法:

namespace Bot
{
    public partial class Form1 : Form
    {
            private void makeBets(MarketSummary mkt, double odds, double stakeAmt)
            {
                ArrayList betList = new ArrayList();

                // code to build "betList"

                ArrayList bets = MyBetfair.placeBets(betList, stakeAmt);

            }
        }
    }
}

我收到的错误信息:

Error 1:'BetfairAPI.CBetfairAPI'不包含定义为'placeBets'的方法,且没有接受类型为'BetfairAPI.CBetfairAPI'的第一个参数的扩展方法'placeBets'(您是否缺少using指令或程序集引用?)

在CBetfairAPI类中,我可以正常使用其他任何方法,但如果我输入“CBetfairAPI.”,则无法在Visual Studio的下拉菜单中找到placeBets()(其他所有方法和字段都可以找到)。

谢谢你的帮助。


3
MyBetfair 变量在哪里和如何声明? - Steve
4个回答

18

placeBets(betList, stakeAmt) 是一个实例方法,而非静态方法。你需要先创建一个 CBetfairAPI 的实例:

MyBetfair api = new MyBetfair();
ArrayList bets = api.placeBets(betList, stakeAmt);

2

这个错误会有两种情况出现:

  1. 你使用了未声明的变量
  2. 你没有创建类的实例

1
虽然这两个都很有帮助,但最好明确表明您认为OP的特定问题是什么。在这种情况下,看起来已经有一个被接受的答案解决了问题(因为这是一个相当旧的问题)。但是在将来,最好发布的答案能够提供完整的解决方案,而不仅仅是可能的解决方案的亮点。 - SuperBiasedMan

2

声明一个CBetfairAPI类的实例,或将其设为静态。


0

尝试在您的placeBets方法中使用this关键字。 据我理解,您可以使用this为给定类型创建扩展方法。在这种情况下,您正在为ArrayLists创建扩展方法。

public static ArrayList placeBets(this ArrayList betList, double stakeSize)
{
    return betList;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接