Атрибут DataContractSerializer KnownType не соблюдается?
У меня есть класс, который украшен атрибутом KnownType с типом класса. Разве это не разрешено?
[KnownType(typeof(Occ600UIConfig))]
public class Occ600UIConfig
{ }
Если да, то почему DCS выдает следующее исключение?
{"Ошибка в строке 1 позиции 387. Элемент" http://schemas.microsoft.com/2003/10/Serialization/Arrays:Value "содержит данные" http://schemas.datacontract.org/2004/07/OCC600.Infrastructure.Dictionary.BusinessEntities:Occ600UIConfig 'контракт данных. Десериализатор не знает ни о каком типе, который сопоставляется с этим контрактом. Добавьте тип, соответствующий'Occ600UIConfig', в список известных типов - например, с помощью атрибута KnownTypeAttribute или добавив его в список известных типов, переданных в DataContractSerializer."}
1 ответ
KnownType
Атрибут используется для определения и "объявления" классов-потомков базового класса, которые также могут использоваться в данном контексте.
Но ваш класс данных в WCF должен быть помечен в первую очередь [DataContract]
атрибут (и все члены, которые вы хотите включить в [DataMember]
атрибуты):
[DataContract]
public class Occ600UIConfig
{ }
Если у вас нет иерархий наследования, вам никогда не понадобится атрибут KnownType.