避免在二进制格式化程序和.NET Remote中对新列表成员进行反序列化

时间:2018-10-28 15:36:59

标签: c# .net .net-4.5 .net-remoting

我的代码无法使用.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时,在序列化时未知。如果存在,我想提取它(反序列化)。

0 个答案:

没有答案