как настроить "это тип, но используется как переменная"? - PullRequest
11 голосов
/ 01 июня 2009

Я пытаюсь сгенерировать некоторый код в веб-сервисе. Но он возвращает 2 ошибки:

1) Список является типом, но используется как переменная

2) Никакая перегрузка для метода «Клиент» не принимает «3 аргумента»

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

Как мне исправить ошибку выше?

Ответы [ 4 ]

31 голосов
/ 01 июня 2009

Проблема на линии

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

нужно добавить "новый"

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

Дополнительно для следующей строки должно быть:

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

РЕДАКТИРОВАТЬ: Если вы используете VS2005, то вы должны создать новый конструктор, который принимает 3 параметра.

public Customer(string name, string surname, string number)
{
     this.name = name;
     this.surname = surname;
     this.number = number;
}
4 голосов
/ 01 июня 2009

Это

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

должно быть:

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

и вам нужно создать конструктор Customer, который принимает 3 аргумента, которые вы хотите передать. Конструктор Customer по умолчанию не имеет аргументов.

2 голосов
/ 01 июня 2009

Чтобы ответить на ваш второй вопрос:

Вам либо нужно создать конструктор, который принимает три аргумента:

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

или установите значения после создания объекта:

Customer customer = new Customer();
customer.Name = "yusuf";
customer.SurName = "karatoprak";
customer.Number = "123456";
li.Add(customer);
0 голосов
/ 01 июня 2009

Поскольку все свойства в классе Customer имеют открытые сеттеры, у вас нет абсолютно для создания конструктора (как большинство предлагали). У вас также есть альтернатива использовать конструктор по умолчанию без параметров и установить свойства объекта:

Customer c = new Customer();
c.Name = "yusuf";
c.SurName = "karatoprak";
c.Number = "123456";
li.Add(c);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...