首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IXmlSerializable重命名ElementName

IXmlSerializable重命名ElementName
EN

Stack Overflow用户
提问于 2022-09-30 20:57:09
回答 1查看 81关注 0票数 0

我看到了重命名元素名的例子,因为我在XMLWrite中有很多接口,但是如何在XMLRead()中反序列化正确的类型呢?

代码语言:javascript
复制
public void WriteXml(XmlWriter writer)
{

 XmlRootAttribute x = new XmlRootAttribute();          
 x.ElementName = nameof(IViewModel);
 var dwserializer = new XmlSerializer(this.DataContext.GetType(),x);
 dwserializer.Serialize(writer, this.DataContext);            
}


 

public void ReadXml(XmlReader windowReader)
{
 var type = Type.GetType(windowReader.GetAttribute("AssemblyQualifiedName")); //this come from Viemodel Serialization                           
 var dwserializer = new XmlSerializer(type);
 var a = dwserializer.Deserialize(windowReader); //this throw error since it read unentended "IViewModel"
}



 <Workspace Title="WS-001" NosWorkSpaceGuid="7f81ed2e-a511-4f9d-81db-9728304dad67">
    <ViewCollection>
    <ChartWindow AssemblyQualifiedName="CustomView.ChartWindow, ChartWindows, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" Top="78" Left="78" Height="1023" Width="2580">
    <IViewModel AssemblyQualifiedName="CustomView.ChartWindowViewModel, ChartWindows, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" Guid="606a4303-4662-4092-9c92-c452fb0f2860">
    <Conteners/>
    </IViewModel>
    </ChartWindow>
    </ViewCollection>
    </Workspace>

如果您知道我如何读取XML并将其反序列化为我的真实类型的话?也许是个演员?

如果没有重命名,xml看起来就像这个和workwell一样,但是我喜欢将接口重命名。

代码语言:javascript
复制
<Workspace Title="WS-001" NosWorkSpaceGuid="08f17674-f7be-418a-a388-e3fc8796cb92">
<ViewCollection>
<ChartWindow AssemblyQualifiedName="CustomView.ChartWindow, ChartWindows, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" Top="226" Left="845" Height="1023" Width="2580">
<ChartWindowViewModel AssemblyQualifiedName="CustomView.ChartWindowViewModel, ChartWindows, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" Guid="276d0b1b-e3d9-4067-a56e-ecc43faaa4e4">
<Conteners/>
</ChartWindowViewModel>
</ChartWindow>
</ViewCollection>
</Workspace>
EN

回答 1

Stack Overflow用户

发布于 2022-10-01 11:15:52

nvm刚刚意识到我也可以重命名反序列化器。

代码语言:javascript
复制
XmlRootAttribute x = new XmlRootAttribute();
x.ElementName = nameof(IViewModel);
var dwserializer = new XmlSerializer(type,x);
var a = dwserializer.Deserialize(windowReader);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73913885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档