Динамические контракты с WCF невозможны.Что вы можете сделать, так это иметь базовый класс контракта данных, а затем наследовать его от:
[DataContract]
public class MyOperationResultBase { ... }
[DataContract]
public class SpecificSchema01 : MyOperationResultBase { ... }
, а затем в вашем сервисе вы можете сделать
[OperationContract]
public MyOperationResultBase DoMyOperation(MyOperationRequest request) { ... }
Затем вы возвращаете экземплярприменимый производный класс по мере необходимости.
Очевидно, это также означает, что ваш клиент должен проверить тип возвращаемого результата, и вы должны указать типы производных классов в базовом классе (или создать преобразователь типов,но вы можете сделать это позже, если это решение будет работать для вас):
[KnownType(typeof(SpecificSchema01))]
[KnownType(typeof(SpecificSchema02))]
[KnownType(typeof(SpecificSchema03))]
[DataContract]
public class MyOperationResultBase { ... }
Это то, что вы ищете?