ASMX-Web-Service - Rendite-Benutzer definierte Klasse, die mit den Eigenschaften

Hey,
Ich bin versucht, um wieder eine Benutzer-definierte Klasse von einer web-Methode. Die Klasse hat Eigenschaften und/oder Methoden.
Die folgenden web-Methode:

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

Nehmen wir nun an, dieser web-Dienst verbraucht wird, durch hinzufügen einer web-Referenz in eine neu erstellte Konsolenanwendung. Der folgende code wird verwendet, um es zu testen:

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

Zunächst, das funktioniert nicht, wenn der MenuItem-Klasse enthält Eigenschaften, die... Auch, wenn das MenuItem-Klasse enthält eine Methode, die den Aufruf der web-Methode nicht scheitern, aber die Methode ist nicht in der generierten proxy-Klasse.. zum Beispiel: menuItemList[i].getName() gibt es nicht. Warum? Was bin ich?

//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;  
    }  
}
zu format-code ist hier nur eingerückt 4 Räume, nicht wickeln Sie es in <code> Blöcke. es gibt eine kleine Taste, die Sie verwenden können, um es für Sie tun.
Vielen Dank, es war wirklich anfängt zu Nerven mich.

InformationsquelleAutor Mikey | 2010-10-01

Schreibe einen Kommentar