webForumDet fria alternativet

No overload for method 'Intresse' takes '18' argument

.NET

5 svar · 665 visningar · startad av annasmurf

Medlem sedan mars 2006237 inlägg
Frågan#1

Hej!

har probelm med No overload for method 'Intresse' takes '18' argument

private void TransferFormReceipti()
    {
        Bokning bokningi = new Bokning();
        int hotellId = Convert.ToInt32(DropDownListHotelli.SelectedValue);
        int eventId;
        string fornamn = contactFirstname.Text;
        string efternamn = contactLastname.Text;
        string adress = gatuadress.Text;
        string PostNummer = postNummer.Text;
        string PostOrt = postOrt.Text;
        string telefon = string.Empty;
       string epost = contactEmail.Text;
        string onskemal = extraInfo.Text;
         int nights = Convert.ToInt32 (DropDownListAntalOvernattningari.SelectedValue);
       
       DateTime checkInDate = DateTime.Parse(TextBoxAvresedatum.Text);
        int antal = Convert.ToInt32(LabelAntalResenarer.Text);
        int antalEnkel = Convert.ToInt32(DropDownListAntalEnkeli.SelectedValue);
        int antalDubbel = Convert.ToInt32(DropDownListAntalDubbeli.SelectedValue);
        int antalTwin = Convert.ToInt32(DropDownListAntalTwini.SelectedValue);
        int antalTrippel = Convert.ToInt32(DropDownListAntalTrippeli.SelectedValue);

        bokningi.IntresseanmalanEvent(hotellId, eventId, fornamn, efternamn, adress, PostNummer, PostOrt, telefon, mobiltelefon, epost, antal, antalEnkel, antalDubbel, antalTwin, antalTrippel, onskemal, nights, checkInDate);
                                                                                                          }

klassen ser ut så här:

public void IntresseanmalanEvent(int HotellId, int eventId, string Fornamn, string Efternamn, string Adress, string PostNummer, string PostOrt, string Telefon, string Mobiltelefon, string EPost, int Antal, int AntalEnkel, int AntalDubbel, int AntalTwin, int AntalTrippel, string Onskemal, int Nights, DateTime CheckInDate)
        {                                                                                                                              

           string namn = Fornamn + " " + Efternamn;

            string Postadress = string.Empty;

            if (PostNummer.Length > 0)
                Postadress = Postadress + PostNummer + " ";

            if (PostOrt.Length > 0)
                Postadress = Postadress + PostOrt;

            BokningSchema.BokningRow bokningRow = ds2Return.Bokning.NewBokningRow();
            bokningRow.HotellId = HotellId;
            bokningRow.eventId = eventId;
            bokningRow.transportTypeId = 1;
            bokningRow.Namn = namn;
            bokningRow.Adress = Adress;
            bokningRow.Postadress = Postadress;
            bokningRow.Telefon = Telefon;
            bokningRow.Mobiltelefon = Mobiltelefon;
            bokningRow.EPost = EPost;
            bokningRow.Antal = Antal;
            bokningRow.AntalEnkel = AntalEnkel;
            bokningRow.AntalDubbel = AntalDubbel;
            bokningRow.AntalTwin = AntalTwin;
            bokningRow.AntalTrippel = AntalTrippel;
            bokningRow.Onskemal = Onskemal;
            bokningRow.DateRequest = DateTime.Now;
            bokningRow.Nights = Nights;
           
            ds2Return.Bokning.AddBokningRow(bokningRow);
            bta.Update(ds2Return.Bokning);
        }

Varför blir det fel jag tycker jag har 18 argument i bägge!!!!!

Medlem sedan sep. 2006867 inlägg
#2

Jag ser ingen metod 'Intresse' alls, bara en 'IntresseanmalanEvent'

Så om du har postat exakt rätt felmeddelande så är det något annat som inte stämmer.

Medlem sedan mars 2006237 inlägg
#3

nä, det metoden IntresseanmalanEvent, skrev bara inte ut det i felmedleandet

Medlem sedan maj 20012 812 inlägg
#4

usch....

18 inputparamters! Du skrämer slag på mig. Nu lämnar koden mycket annat att önska, men det första du bör göra för att komma tillrätta med sådana här problem är helt enkelt att skapa en class/strukt som kan hålla alla dessa 18 parameters och skicka in denna klass strukt till din metod istället...

public class IntresseAnmalanDataHolder{

 public int HotellId{get;set;}
 public int EventId{get;set;}
 ...
 public DateTime CheckInDate{get;set;}
}

//-- Antingen använder du dig av en construktor som tar emot dina 18 parameters, eller använder du den inbyggda 
//-- funktionen i .NET 3.5 som låter dig sätta parametervärdet när du skapar klassen, enkelt och snyggt i detta fallet..
IntresseAnmalanDataHolder intresseAnmalanDataHolder = new IntresseAnmalanDataHolder{
   HotellId = hotellId,
   EventId = eventId,
   ...
   CheckInDate = checkInDate
};

bokningi.IntresseanmalanEvent(intresseAnmalanDataHolder);

Om du gör detta så kan du lägga mycket av din kontroll logik i IntresseAnmalanDataHolder klassens properties och din kod blir renare och enklare att läsa.

public class IntresseAnamalanDataHolder{
   private string _Address;

   public string Address{
     get{return CreateAddress();}
     set{_Address = value;}
  }
  public string Uppgang{get;set;}
  public string Trappa{get;set;}

  private string CreateAddress(){
     return String.ConCat(_Address, " ", this.Uppgang, " ", this.Trappa).Trim();
  }
}

om du gör så så slipper du följande kod

string adress = gatuadress.Text;
if (uppgang.Text.Length > 0)
adress = adress + " " + uppgang.Text;
if (trappor_ovr.Text.Length > 0)
adress = adress + " " + trappor_ovr.Text;

Nu är det bara exempel kod som jag gav dig, det blir nog snyggare med en stringbuilder för att bygga ihop addressen.

- M

Medlem sedan mars 2006237 inlägg
#5

löst detta själv, classen var inte med i kompileringen, men tack för svaren!

Medlem sedan sep. 2006867 inlägg
#6

Berätta gärna vad som var fel och markera tråden som löst :)

259 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)