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;
}
}
Merci, c'était vraiment commence à m'agacer.
OriginalL'auteur Mikey | 2010-10-01
Vous devez vous connecter pour publier un commentaire.
Il ne fonctionnera que si la classe est sérialisable qui signifie généralement des champs publics et des propriétés, c'est pourquoi votre MenuItem va échouer parce que votre
client
côté n'a aucune idée de la façon de construire la classe MenuItem correctement.Essayez ceci:
OriginalL'auteur Lloyd
2a. Pour contourner ce problème, vous pouvez utiliser des classes partielles ré-écrire certaines des méthodes.
OriginalL'auteur tster