Ciao,
cosa intendi per tipo non primitivo? che non è un tipo primitivo di .net, ma è un oggetto tuo?
I webservice sono ottimi per passare oggetti, in quanto si arrangia .net a serializzarti tutto quello che ti serve, ti basta fare una classe e metterla nel metodo, ad esempio:
public class MioTipo
{
public int ID {get; set;}
public string Nome {get; set;}
public string Cognome {get; set;}
public DateTime DataNascita {get; set;}
...etc...
}
...
[WebMethod]
public void GetOggetto(MioTipo parametro)
{
....etc....
}
chiaramente vale sia come parametro che come ritorno di un metodo...si arrangia .net a farti tutta la serializzazione...
Lavorando ad oggetti fai quello che vuoi senza passare per serializzazioni fatte a mano, o datatable etc...tu lavori ad oggetti e sei tranquillo (quasi sempre...)
Ciao.
Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo