Does not contain a definition for and no extension method accepting a first argument of type could be found

Savino picture Savino · Nov 19, 2013 · Viewed 120.4k times · Source

I've looked around at some of the solutions to this problem but they don't seem to be the same as what I'm experiencing.

Method that I'm trying to call:

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

            return betList;
        }
    }
}

Method that I'm calling from:

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 that I'm receiving:

Error 1 'BetfairAPI.CBetfairAPI' does not contain a definition for
'placeBets' and no extension method 'placeBets' accepting a first argument of type 'BetfairAPI.CBetfairAPI' could be found (are you missing a using directive or an assembly reference?)

I have no problem using any other methods in the CBetfairAPI class. placeBets() doesn't show up in the drop down menu in Visual studio if I do 'CBetfairAPI.' (all the other methods and fields do).

Thanks for your help.

Answer

Jakub Konecki picture Jakub Konecki · Nov 19, 2013

placeBets(betList, stakeAmt) is an instance method not a static method. You need to create an instance of CBetfairAPI first:

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