Как настроить "является типом, но используется как переменная"?
Я пытаюсь создать код в веб-службе. Но он возвращает 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; } }
}
Как я могу настроить ошибку выше?
Ответы
Ответ 1
Проблема заключается в строке
List<Customer> li = List<Customer>();
вам нужно добавить "новый"
List<Customer> li = new List<Customer>();
Дополнительно для следующей строки должно быть:
li.Add(new Customer{Name="yusuf", SurName="karatoprak", Number="123456"});
EDIT: Если вы используете VS2005, вам нужно создать новый конструктор, который принимает 3 параметра.
public Customer(string name, string surname, string number)
{
this.name = name;
this.surname = surname;
this.number = number;
}
Ответ 2
Это
List<Customer> li = List<Customer>();
должно быть:
List<Customer> li = new List<Customer>();
и вам нужно создать конструктор Customer, который принимает три аргумента, которые вы хотите передать. Конструктор клиента по умолчанию не принимает аргументов.
Ответ 3
Чтобы ответить на второй вопрос:
Вам либо нужно создать конструктор, который принимает три аргумента:
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);
Ответ 4
Поскольку все свойства класса Customer
имеют публичные сеттеры, вам не обязательно создавать конструктор (как это было предложено большинством). У вас также есть альтернатива использовать конструктор без параметров без параметров и задать свойства объекта:
Customer c = new Customer();
c.Name = "yusuf";
c.SurName = "karatoprak";
c.Number = "123456";
li.Add(c);