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;
}
}
Vielen Dank, es war wirklich anfängt zu Nerven mich.
InformationsquelleAutor Mikey | 2010-10-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wird es nur funktionieren, wenn die Klasse serialisierbar ist, die in der Regel bedeutet, dass öffentliche Felder und Eigenschaften, das ist, warum Ihr MenuItem wird scheitern, weil Ihre
client
Seite hat keine Idee, wie das zu konstruieren, die MenuItem-Klasse richtig.Versuchen Sie dies:
InformationsquelleAutor Lloyd
2a. Um dies zu umgehen, können Sie mithilfe partieller Klassen zu implementieren einige der Methoden.
InformationsquelleAutor tster