【发布时间】:2022-10-01 19:15:52
【问题描述】:
我看到了重命名元素名称的示例,因为我在 XMLWrite 中有很多接口,但是我如何反序列化 XMLRead() 中的正确类型?
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 看起来像这样并且运行良好,但我喜欢重命名界面。
<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>
标签: c# serialization deserialization ixmlserializable