如果我在命名空间AssemblyA
下的AssemblyA.Entities
中定义了类/接口对:
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
然后,如果我将代码/名称空间复制到AssemblyB
,以便我有名称空间AssemblyA.Entities
和完全相同的代码:
public IEntity
{
string Name { get; set; }
}
[Serializable]
public Entity : IEntity
{
public string Name { get; set; }
}
如果我尝试反序列化以前序列化的XML,我会收回AssemblyB
的{{1}}列表吗?或者它会失败吗?
序列化程序在什么时候停止关注它反序列化的内容?装配可以不同吗?命名空间可以有所不同吗?只要属性名称相同,类型名称是否重要?
答案 0 :(得分:1)
这会奏效。您将获得AssembyB实体。
当客户端基于wsdl中的信息来构建类时,Web服务本质上是如何工作的,然后客户端会将SOAP消息中的数据反序列化到这些脚手架类中。