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; }
}