当前位置: 首页 > 编程语言 > C#

接口和抽象类中的Xml属性分享

时间:2023-04-11 00:08:42 C#

接口和抽象类中的Xml属性今天发现了一个困扰我的问题:1.如果我有这个:publicinterfaceINamed{[XmlAttribute]stringName{get;放;}}publicclassNamed:INamed{publicstringName{get;放;}}给出以下输出(序列化为元素的名称属性):Johan2.如果我有这个:publicabstractclassNamedBase{[XmlAttribute]publicabstractstringName{get;放;}}publicclassNamedDerived:NamedBase{publicoverridestringName{get;',但具有不同的自定义属性。我用于序列化的代码:[TestFixture]publicclassXmlAttributeTest{[Test]publicvoidSerializeTest(){varnamed=newNamedDerived{Name="Johan"};varxmlSerializer=newXmlSerializer(named.GetType());varstringBuilder=newStringBuilder();使用(varstringWriter=newStringWriter(stringBuilder)){xmlSerializer.Serialize(stringWriter,已命名);}Console.WriteLine(stringBuilder.ToString());我的问题是:我做错了,如果是这样,在接口和抽象类中使用xml属性的正确方法是什么?属性不会继承重写的属性。您需要重新声明它们。同样在第一个示例中,当您在接口级别声明XmlAttribute并且序列化的xml包含作为元素的值时,行为不是“预期的”。因此,接口中的属性将被忽略,只有从实际类中获取的信息才会起作用。我认为您应该忽略您的抽象类属性。以上就是《C#学习教程:接口和抽象类中的Xml属性》的全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多加关注——publicabstractclassNamedBase{[XmlIgnore]publicabstractstringName{get;放;}}publicclassNamedDerived:NamedBase{[XmlAttribute]publicoverridestringName{get;放;}}侵权请点击右侧联系管理员删除。如需转载请注明出处: