我正在使用带有 WCF 的 NetDataContractSerialiser。这适用于我们所有被序列化的类型。但是,我正在调用的服务正在生成以下异常
格式化程序在尝试反序列化消息时抛出异常:
尝试反序列化参数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=neutral,PublicKeyToken=null]]' 在程序集“mscorlib,版本=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”中找不到。检查被序列化的类型是否与被反序列化的类型具有相同的合同,并且使用了相同的程序集。有关更多详细信息,请参阅 InnerException。
被序列化的类有一个属性定义为
public IDictionary<enumFundingParameterContextKey, string> Context { get; set; }
枚举的声明是
[Serializable]
public enum enumFundingParameterContextKey
{
[EnumMemberAttribute()]
ClientId = 0,
[EnumMemberAttribute()]
EntitlementDefinitionId = 1
}
这是在另一个程序集中定义的。
当我用 int 替换枚举时,类反序列化没有问题。任何想法为什么使用枚举会导致异常?
使用 NetDataContractSerializer 的原因是为了提供类型信息并避免使用 KnownType