Определение веб-службы должно знать структуру того, что возвращается, чтобы оно знало, какие поля следует включить в конверт SOAP, и чтобы подписчик этой службы знал, чего ожидать. Если вы хотите вернуть один или другой, вам следует использовать 2 разных сервиса или создать тип, который может представлять оба и возвращать коллекцию этого, тогда вам придется обернуть его на стороне клиента, чтобы вы могли скрыть детали не относится к конкретному использованию.
Например,
struct CustomerOrProduct
{
ItemType type = ItemType.Customer; // This indicates the type that the struct is currently representing
string name; // This is for products and customers
string address; // This is for customers only
}
Очевидно, что эта структура нуждается в уточнении с помощью методов доступа к свойствам и т. Д., Но она должна дать вам идею. Однако я не рекомендую делать это так. Вместо этого вы должны использовать отдельные сервисы для каждого типа, который вы хотите получить. В конце концов, если вы знаете достаточно для передачи нужного типа в качестве параметра, вы знаете достаточно для вызова другой службы.