我的代码无法使用.net remote和BinaryFormatter
反序列化。
请考虑以下结构:
[serialized]
public class Entity
{
[Attribute]
public abstract IMyExtendedCollection<IAddionalEntity> AddionalEntities { get;set;}
}
public interface IMyExtendedCollection<TEntityType> : IBasicUniqueCollection<TEntityType, Guid> where TEntityType : Entity{
}
public interface IBasicUniqueCollection<TUnique, TUId> where TUnique : IUnique<TUId>{
IList<TUnique> Values { get; }
}
public class AddionalEntity: Entity{
}
public class NewEntity : IAddionalEntity{
}
在新版本中,我已将NewEntity
添加到AddionalEntities。旧实体上不存在NewEntity。我需要使用.net远程发送entity
(基类)给旧客户端。这会使反序列化过程失败,因为旧客户端不知道NewEntity。考虑到AddionalEntities是一个属性而不是一个字段,我不能使用[OptionalField]
。
有没有办法解决?我已经尝试过使用[OnDeserializing]
进行某些操作,但这没有效果。
编辑:在进行反序列化的计算机上是否存在NewEntity
时,在序列化时未知。如果存在,我想提取它(反序列化)。