Вам просто нужно добавить следующее свойство в ваш класс datacontract.
[DataMember]
public object UsedForKnownTypeSerializationObject;
Итак, теперь сгенерированный прокси-сервер содержит типы знаний, которые вы установили в контракте данных. У меня была та же проблема, и это единственное решение, которое я придумал. Если у вас нет свойства типа Object для класса DataContract, сгенерированный прокси-сервер не содержит объявленных типов знаний
Например:
[DataContract]
[KnownType(typeof(List<String>))]
public class Foo
{
[DataMember]
public String FooName { get; set; }
[DataMember]
public IDictionary<String, Object> Inputs { get; set; }
[DataMember]
private Object UsedForKnownTypeSerializationObject{ get; set; }
}
Это не так красиво, потому что вы получаете фиктивное свойство, которое не имеет никакой функциональной реализации. Но опять же у меня нет другого решения.