12

我已经查看了这个问题的一些解决方案,但它们似乎与我所遇到的不同。

我试图调用的方法:

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

            }
        }
    }
}

我收到的错误:

错误 1“BetfairAPI.CBetfairAPI”不包含“placeBets”的定义,
并且找不到接受“BetfairAPI.CBetfairAPI”类型的第一个参数的扩展方法“placeBets”(您是否缺少 using 指令或程序集引用?)

我在 CBetfairAPI 类中使用任何其他方法都没有问题。如果我执行“CBetfairAPI”,placeBets() 不会显示在 Visual Studio 的下拉菜单中。(所有其他方法和字段都可以)。

谢谢你的帮助。

4

4 回答 4

18

placeBets(betList, stakeAmt)实例方法而不是静态方法。您需要先创建一个实例CBetfairAPI

MyBetfair api = new MyBetfair();
ArrayList bets = api.placeBets(betList, stakeAmt);
于 2013-11-19T08:32:10.537 回答
2

声明 CBetfairAPI 类的实例或使其成为静态的。

于 2013-11-19T08:32:36.413 回答
2

有两种情况会引发此错误。

  1. 您没有声明使用的变量
  2. 你没有创建类的实例
于 2015-09-30T08:29:58.447 回答
0

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

public ArrayList placeBets(this ArrayList betList, double stakeSize)
    {
        // code to betList maniplulate

        return betList;
    }
于 2021-11-28T12:15:52.250 回答