Веб-служба ASMX - возвращает определенный пользователем класс со свойствами

Эй, Я пытаюсь вернуть определенный пользователем класс из веб-метода. У класса есть свойства и / или методы. Учитывая следующий веб-метод:

[WebMethod]  
public List<MenuItem> GetMenu()  
{  
    List<MenuItem> menuItemList = new List<MenuItem>();  
    menuItemList.Add(new MenuItem());  
    menuItemList.Add(new MenuItem());  
    menuItemList.Add(new MenuItem());  
    return menuItemList;  
}

Теперь предположим, что эта веб-служба используется путем добавления веб-ссылки во вновь созданное консольное приложение. Для его проверки используется следующий код:

public void TestGetMenu()  
{  
    MenuService service = new MenuService.MenuService();  
    service.MenuItem[] menuItemList = service.GetMenu();  
    for (int i = 0; i < menuItemList.Length; i++)  
    {  
        Console.WriteLine(menuItemList[i].name);  
    }  
    Console.ReadKey();  
}  

Прежде всего, это не работает, если класс MenuItem содержит свойства ... Кроме того, если класс MenuItem содержит метод, вызов веб-метода не завершается ошибкой, но метод не находится в сгенерированном прокси-классе .. например: menuItemList [i] .getName () не существует. Зачем? Что мне не хватает?

//This works  
public class MenuItem  
{  
    public string name;  
    public MenuItem()  
    {  
        name = "pizza";  
    }  
}



//This crashes / doesnt work  
public class MenuItem  
{  
    private string name;  
    public MenuItem()  
    {  
        name = "pizza";  
    }  
    public string Name  
    {  
        get { return name; }  
        set { name = value; }  
    }  
}



//This successfully calls web method, but the method does not exist during test  
public class MenuItem  
{  
    private string name;  
    public MenuItem()  
    {  
        name = "pizza";  
    }  
    public string getName()  
    {  
        return name;  
    }  
}
5
задан Daniel Dyson 1 October 2010 в 13:50
поделиться