C# 反序列化来自不同程序集的匹配类型

C# 反序列化来自不同程序集的匹配类型,c#,serialization,xml-serialization,assemblies,C#,Serialization,Xml Serialization,Assemblies,如果我在命名空间AssemblyA.Entities下的AssemblyA中定义了类/接口对: public IEntity { string Name { get; set; } } [Serializable] public Entity : IEntity { public string Name { get; set; } } 我使用XmlSerializer将其序列化为XML: var myEntities = new List<IEntity>();

如果我在命名空间
AssemblyA.Entities
下的
AssemblyA
中定义了类/接口对:

public IEntity
{
    string Name { get; set; }
}

[Serializable]
public Entity : IEntity
{
    public string Name { get; set; }
}
我使用
XmlSerializer
将其序列化为XML:

var myEntities = new List<IEntity>();
// myEntities is populated somehow
var data = XmlSerializationManager.Serialize(myEntities);
// 'data' gets saved to disk somewhere as a file
如果我尝试反序列化以前序列化的XML,我会返回
AssemblyB
AssemblyA.Entities.IEntity
列表吗?还是会失败


序列化程序在什么时候停止关心它的反序列化目标?装配有什么不同吗?名称空间会有所不同吗?只要属性名称相同,类型名称是否重要?

这将起作用。您将获得AssembyB实体

这本质上就是Web服务的工作方式。当客户端将基于wsdl中的信息构建类时,客户端将从soap消息反序列化数据到这些构建类中。

您可以在序列化文本中查找完全限定的类型名称。如果它们存在,则有关程序集的信息将在该特定序列化程序序列化时持久化。
public IEntity
{
    string Name { get; set; }
}

[Serializable]
public Entity : IEntity
{
    public string Name { get; set; }
}