Я вижу, что вы создаете сервисы WCF для конкретного контракта интерфейса.
Если вы можете просто указать любой тип объекта, то не существует программного механизма для проверки того, что любой конец канала правильно реализовал этот интерфейс.
Я обнаружил, что WCF, как правило, гораздо более строг, чем ASMX, с точки зрения сериализации и десериализации классов, но переход на WCF с ASMX значительно улучшил наши приложения с точки зрения стабильности, удобства обслуживания и производительности.
Сказав это, нет причин переходить на WCF только потому, что это WCF. Вам нужно точно определить, почему вы считаете, что это лучше для вашей ситуации, и, если это так, то вам нужно создать несколько тестовых случаев, используя реальные классы, а не просто Objects, чтобы убедиться, что он будет соответствовать вашим потребностям.
Стоит задуматься: если вы используете сервисы WCF в своих собственных .Net-приложениях, написанных на Silverlight, WPF или WinForms, то в конечном итоге WCF значительно облегчит вашу жизнь, так как позволяет делиться один и тот же код класса бизнес-объекта на обоих концах канала.
Обновление с информацией из комментариев
На самом деле, вы можете сериализовать абстрактные классы, если они могут быть десериализованы в конкретные реализации. Вы можете сделать это, присвоив абстрактный класс атрибуту KnownType для каждого конкретного класса, который вы хотите сериализовать.
Основная проблема не в контракте интерфейса службы, а в DataContract, который требует определенного класса в какой-то момент. Эта ссылка описывает правила.
Вы можете создать класс catchall, который наследуется от объекта и имеет известный тип для классов, которые вы хотите использовать.