2009-06-01 4 views
11

Ich versuche, Code in einem Webdienst zu generieren. Aber es ist die Rückkehr 2 Fehler:Wie wird "eingestellt" ist ein Typ, wird aber wie eine Variable verwendet?

1) Liste ist eine Art aber ist wie eine Variable verwendet

2) Keine Überladung für Methode ‚Kunde‘ nimmt ‚3 Argumente‘

[WebService(Namespace = "http://tempuri.org/")] 
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
    [ToolboxItem(false)] 
    public class wstest : System.Web.Services.WebService 
    { 

     [WebMethod] 
     public List<Customer> GetList() 
     { 
      List<Customer> li = List<Customer>(); 
      li.Add(new Customer("yusuf", "karatoprak", "123456")); 
      return li; 
     } 
    } 

    public class Customer 
    { 
     private string name; 
     private string surname; 
     private string number; 

     public string Name { get { return name; } set { name = value; } } 
     public string SurName { get { return surname; } set { surname = value; } } 
     public string Number { get { return number; } set { number = value; } } 
    } 

Wie kann ich den obigen Fehler korrigieren?

+2

Verwenden 'new' Schlüsselwort vor' list' Klasse –

Antwort

30

Das Problem ist bei der Linie

List<Customer> li = List<Customer>(); 

Sie brauchen "neue"

List<Customer> li = new List<Customer>(); 

Zusätzlich für die nächste Zeile sollte hinzufügen:

li.Add(new Customer{Name="yusuf", SurName="karatoprak", Number="123456"}); 

EDIT: Wenn Sie VS2005 verwenden, müssen Sie einen neuen Konstruktor erstellen, der die 3 pa übernimmt Rameter.

public Customer(string name, string surname, string number) 
{ 
    this.name = name; 
    this.surname = surname; 
    this.number = number; 
} 
+0

+1, aber die bessere Lösung für die zweite Fehlermeldung ist, einen Konstruktor zu erstellen, der die drei Argumente akzeptiert. –

+1

Deine letzte Aussage nimmt natürlich 3,0 an, sonst müssen wir annehmen, dass er vergessen hat, uns einen Konstruktor zu geben :) – annakata

+0

@annakata: Derselbe Gedanke ist mir aufgefallen! – Cerebrus

4

Diese

List<Customer> li = List<Customer>(); 

Bedürfnisse sein:

List<Customer> li = new List<Customer>(); 

und Sie müssen einen Kunden Konstruktor erstellen, die die drei Argumente, die Sie weitergeben möchten nimmt. Der standardmäßige Kundenkonstruktor benötigt keine Argumente.

2

Ihre zweite Frage zu beantworten:

entweder Sie benötigen einen Konstruktor zu erstellen, die die drei Argumente verwendet:

public Customer(string a_name, string a_surname, string a_number) 
{ 
    Name = a_name; 
    SurName = a_surname; 
    Number = a_number; 
} 

oder die Werte gesetzt, nachdem das Objekt erstellt wurde:

Customer customer = new Customer(); 
customer.Name = "yusuf"; 
customer.SurName = "karatoprak"; 
customer.Number = "123456"; 
li.Add(customer); 
0

Da alle Eigenschaften in der Customer Klasse öffentliche Setter hat, haben Sie nicht unbedingt zu cr eate einen Konstruktor (wie die meisten vorgeschlagen haben). Sie haben auch die Alternative, um den Standard-parameterlosen Konstruktor zu verwenden und die Eigenschaften des Objekts festgelegt:

Customer c = new Customer(); 
c.Name = "yusuf"; 
c.SurName = "karatoprak"; 
c.Number = "123456"; 
li.Add(c); 
Verwandte Themen