jjzjj

IXmlSerializable

全部标签

c# - IXmlSerializable 验证模式

我正在实现IXmlSerializable对于我的类的自定义(反)序列化逻辑,但希望根据XSD模式检查XML的读写。我添加了XmlSchemaProviderAttribute:[XmlSchemaProvider("ConfigSchema")][XmlRoot("Config")]publicclassConfig{//properties,fieldsandmethodsincl.interfacemethodspublicstaticXmlQualifiedNameConfigSchema(XmlSchemaSetxs){conststringxsdPath="./Config

.net - 显式实现接口(interface)时 coSTLy 是如何装箱的

当前的显式成员实现指南建议:使用显式成员来近似私有(private)接口(interface)实现。如果您仅出于基础架构原因需要实现一个接口(interface),并且您从不期望开发人员直接从该类型调用该接口(interface)上的方法,那么显式实现成员以从公众View中“隐藏”它们.公开一种替代方法来访问允许子类覆盖的任何显式实现的成员。一个很好的例子就是当你想实现IXmlSerializable界面。ReadXml和WriteXml方法应由XmlSerializer调用,开发人员通常不会直接调用。当提供一种替代方法来显式访问您希望允许被覆盖的成员时,调用显式实现的成员以避免代码重

c# - IXmlSerializable 和继承

假设我有两个类,一个基类和一个派生类。它们是相当简单的类,主要充当数据结构(派生类显然稍微复杂一些)。publicclassBaseUserSession{//...Variousproperties...}publicclassDerivedUserSession:BaseUserSession{//...Evenmoreproperties...}这些类需要序列化为XML。现在,这可以简单地通过指定[Serializable]来完成。在类声明之上,默认的XML序列化程序运行良好。然而,实际上,有多个类继承自基类。我的目标是能够让任何派生类的序列化XML可供基类使用。我尝试了两种方法

c# 使用 IXmlSerializable 反序列化

我有这样的xml:26,5016980000008,4142780000009,2926740000008,5519820000007,16460500000016,5016980000008,4142780000009,2926740000008,5519820000007,164605000000我需要将它反序列化为类。但问题是,那一周以后会改变(它将包含更多元素,我不知道它们的名称)数据:[XmlRoot("data")]publicclassData{[XmlArray("audit_values")][XmlArrayItem("audit_value",IsNullable

c# - 序列化 : Change the name of the root node without changing the class name

目标获取名为“Item”的类并将其序列化的XML输出为:问题根节点派生自实现IXmlSerializable的类名。//BythetimeIgethere'writer'alreadyhasarootnodepublicvoidWriteXml(XmlWriterwriter){writer.WriteStartElement("Template");//writeoutthepropertieswriter.WriteEndElement();}所以我最终得到的XML看起来像问题是否有一个属性、一个我可以覆盖的属性或任何东西来获得我想要的效果(除了更改类名之外)?谢谢!感谢Frede

c# - Xml 序列化动态忽略

我正在尝试生成特定格式的xml文档。我想跳过根据属性值序列化属性。publicclassParent{publicParent(){myChild=newChild();myChild2=newChild(){Value="Value"};}publicChildmyChild{get;set;}publicChildmyChild2{get;set;}}publicclassChild{privatebool_set;publicboolSet{get{return_set;}}privatestring_value="default";[System.Xml.Serializati

.net - 在复杂对象图上使用 IXmlSerializable 接口(interface)

如果使用自定义XML序列化(IXmlSerialiable),在包含属性的复杂对象上不使用自定义IXmlSerializable接口(interface),您如何在IXmlSerializable.ReadXml(XmlReaderreader)方法中指定您希望反序列化器对这些子属性使用普通反序列化?注意:类似于thisquestion 最佳答案 IXmlSerializable实现起来有点乏味,因为它几乎是一种全有或全无的方法,因为您不能为正常的XML序列化选择子类型。但是,如果我理解正确的话,您可以通过手动创建XmlSerial

c# - 带有 IXmlSerializable 的命名空间前缀

对于要使用的正确装饰器或可能需要的任何设计有点困惑。当序列化一个实现IXmlSerializable的类时,有没有办法在XmlRoot元素中包含命名空间及其前缀?例如类定义。usingSystem;usingSystem.Xml;usingSystem.Xml.Schema;usingSystem.Xml.Serialization;[XmlRoot("Classy",Namespace=XML_NS)]publicclassTestClass:IXmlSerializable{privateconststringXML_PREFIX="";//defaultnamespacepriv

C# Xml-使用 IXmlSerializable 序列化派生类

我有一个与XML序列化兼容的基类和一个实现IXmlSerializable的派生类。在此示例中,基类确实实现了IXmlSerializable:usingSystem.Diagnostics;usingSystem.Text;usingSystem.Xml;usingSystem.Xml.Schema;usingSystem.Xml.Serialization;namespaceXmlSerializationDerived{publicclassFoo{publicintfooProp;publicXmlSchemaGetSchema(){returnnull;}publicvoid

c# - C# 中基于 XML 的项目文件的设计模式

我正在开发一个C#应用程序,其中大部分代码库都在C#类库中。我希望应用程序支持保存和加载基于XML的项目文件,并能够确定自上次保存后是否发生了任何修改。我目前的设计思路是:每个需要存储设置的类都实现IXmlSerializable。应用程序维护IXmlSerializable设置对象的通用列表,并调用ReadXml和WriteXml来保存/加载项目文件。每个存储设置的类还维护一个Modified标志。应用程序可以通过枚举IXmlSerializable对象的通用列表并检查每个对象的Modified标志来检查项目是否已被修改。它还可以在每次保存后清除修改标志。这是一个好的设计吗?还有更好
12