views:

2086

answers:

4

i try to generate some codes in web service. But returing 2 error:

1) List is a type but is used like a variable

2) No overload for method 'Customer' takes '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; } }
    }

How can i adjust above error?

+9  A: 

The problem is at the line

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

you need to add "new"

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

Additionally for the next line should be:

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

EDIT: If you are using VS2005, then you have to create a new constructor that takes the 3 parameters.

public Customer(string name, string surname, string number)
{
     this.name = name;
     this.surname = surname;
     this.number = number;
}
Jose Basilio
+1, but the better solution to the second error message is to create a constructor that accepts the three arguments.
Paul Suart
Your last statement assumes 3.0 of course, otherwise we have to assume he forgot to give us a constructor :)
annakata
@annakata: The same thought occurred to me!
Cerebrus
+2  A: 

This

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

needs to be:

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

and you need to create a Customer constructor which takes the 3 arguments you want to pass. The default Customer constructor takes no arguments.

Nebakanezer
+2  A: 

To answer your second question:

You either need to create a constructor that takes the three arguments:

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

or set the values after the object has been created:

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

As all the properties in the Customer class has public setters, you don't absolutely have to create a constructor (as most have suggested). You also have the alternative to use the default parameterless constructor and set the properties of the object:

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