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