I fixed it by just changing SoapInclude to XmlInclude and it started working! Not quite sure why SoapInclude doesn't work.
[WebMethod]
[XmlInclude(typeof(OrderLine))]
public string EchoOrder(Order order) {
return "WebService: " + order.ToString();
}
Now that I've put XmlInclude in instead, it seems to have added an extra line in Reference.cs which I didn't have before:
[System.Xml.Serialization.XmlIncludeAttribute(typeof(OrderLine))]
The odd thing is, I tried inserting that line manually myself but it didn't fix it completely (I got a different error about a type conversion problem), so it must have changed something else as well.
Thanks for your replies,
Nick...