2009-06-01 8 views
11

J'essaie de générer du code dans un service Web. Mais il est de retour 2 erreurs:comment ajuster "est un type mais est utilisé comme une variable"?

1) Liste est un type, mais est utilisé comme une variable

2) Pas de surcharge pour la méthode 'Client' prend '3 arguments'

[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; } } 
    } 

Comment puis-je Ajuster l'erreur ci-dessus?

+2

Utilisez 'mot-clé new' devant la classe' list' –

Répondre

30

Le problème est à la ligne

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

vous devez ajouter "nouveau"

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

En outre, pour la ligne suivante devrait être:

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

EDIT: Si vous utilisez VS2005, vous devez créer un nouveau constructeur qui prend les 3 pa rameters.

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

+1, mais la meilleure solution pour le deuxième message d'erreur est de créer un constructeur qui accepte les trois arguments. –

+1

Votre dernière déclaration suppose bien sûr que le chiffre 3.0, sinon nous devons supposer qu'il a oublié de nous donner un constructeur :) – annakata

+0

@annakata: La même idée m'est venue à l'esprit! – Cerebrus

4

Ce

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

doit être:

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

et vous devez créer un constructeur de client qui prend les 3 arguments que vous souhaitez passer. Le constructeur client par défaut ne prend aucun argument.

2

Pour répondre à votre deuxième question:

Vous avez besoin soit de créer un constructeur qui prend les trois arguments:

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

ou définir les valeurs après que l'objet a été créé:

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

Comme toutes les propriétés de la classe Customer ont des setters publics, vous n'avez absolument pas ont à cr eate un constructeur (comme la plupart l'ont suggéré). Vous avez aussi l'alternative à utiliser le constructeur sans paramètre par défaut et définissez les propriétés de l'objet:

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