Я использую NetDataContractSerialiser с WCF. Это хорошо работает со всеми сериализуемыми типами. Однако вызываемая мной служба генерирует следующее исключение
Средство форматирования выдало исключение при попытке десериализации сообщения:
Произошла ошибка при попытке десериализации параметра http://tempuri.org/:xmlServiceObjIN. Сообщение InnerException: «Десериализатор не может загрузить тип для десериализации, потому что тип» System.Collections.Generic.EnumEqualityComparer`1 [[GrantEd.Common.DomainModel.Code.Enums.enumFundingParameterContextKey, GrantEd.Common.DomainModel.Codel.Codel.Code .71.0, Культура = нейтральный, PublicKeyToken = null]] 'не удалось найти в сборке' mscorlib, Версия = 2.0.0.0, Культура = нейтральный, PublicKeyToken = b77a5c561934e089 '. Убедитесь, что сериализуемый тип имеет тот же контракт, что и десериализуемый тип, и что используется та же сборка. '. Дополнительные сведения см. В разделе InnerException.
У сериализуемого класса есть свойство, определенное как
public IDictionary<enumFundingParameterContextKey, string> Context { get; set; }
объявление перечисления
[Serializable]
public enum enumFundingParameterContextKey
{
[EnumMemberAttribute()]
ClientId = 0,
[EnumMemberAttribute()]
EntitlementDefinitionId = 1
}
который определен в другом asmebly.
Когда я заменяю перечисление на int, класс десериализуется без проблем. Любые идеи, почему использование перечисления приведет к исключению?
Причина использования NetDataContractSerializer заключалась в том, чтобы информация о типе была доступна и избегала использования KnownType