У меня была такая же проблема в службе WCF, и я сделал следующий "менее гнусный" взлом, чтобы обойти известное ограничение типа. Я обрисовываю в общих чертах только для того, чтобы показать альтернативные варианты, вам решать, лучше это или нет.
При запуске службы загрузите с помощью отражения типы, которые вы хотите выставить. Например. если все ваши объекты, представленные WCF, происходят из общей абстрактной базы (или более), загрузите все типы из сборки, в которую они должны быть помещены. Кэшируйте эти типы статически для повышения производительности.
Создайте статический метод, который возвращает указанные кэшированные типы со следующей подписью:
public static IEnumerable<Type> GetKnownTypes(ICustomAttributeProvider provider)
Пометить интерфейс WCF следующим атрибутом
[ServiceKnownType("GetKnownTypes", typeof(StaticClassThatCachesTypes))]
Это должно дать вам автоматическое представление всех типов, которые или будут производными от базового класса (классов) по вашему выбору, если будущий разработчик (и) разместит их в правильной сборке .