【发布时间】:2011-09-06 21:17:49
【问题描述】:
我正在使用带有 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
【问题讨论】:
标签: wcf enumeration netdatacontractserializer