Service Web ASMX - Retour en classe définie par l'utilisateur avec des propriétés

Hey,
Je suis en train de retourner une classe définie par l'utilisateur à partir d'une méthode web. La classe a des propriétés et/ou des méthodes.
Compte tenu de la suite de la méthode web:

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

Maintenant, supposons que ce service web est consommée par l'ajout d'une référence web dans une nouvelle application de console. Le code suivant est utilisé pour le tester:

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();  
}  

Tout d'abord, cela ne fonctionne pas si le MenuItem classe contient des propriétés... Aussi, si le MenuItem classe contient une méthode de l'appel à la méthode web n'est pas un échec, mais la méthode n'est pas dans le proxy généré classe.. par exemple: menuItemList[i].getName() n'existe pas. Pourquoi? Ce qui me manque?

//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;  
    }  
}
pour le format de code ici indentation de 4 espaces, ne pas envelopper dans un <code> blocs. il y a un petit bouton que vous pouvez utiliser pour le faire pour vous.
Merci, c'était vraiment commence à m'agacer.

OriginalL'auteur Mikey | 2010-10-01