Im Verwenden der XmlSerializer-Klasse zum Serialisieren einer abgeleiteten Klasse "MyContext", die eine Basisklasse "BaseClass" erbt. Die Basisklassenattribute "attr1", "attr2" sind in der serialisierten XML-Ausgabe nicht vorhanden. Ich benötige diese Attribute in der Context-Klasse und der geschachtelten Klasse innerhalb der Context-Klasse. Bitte helft was hier fehlt.Xml-Serialisierung Basisklassenattribute
namespace MyConsoleApplication
{
[System.Xml.Serialization.XmlIncludeAttribute(typeof(MyContextType))]
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class BaseType
{
private MyEnumType attr1Field;
private MyEnumType attr2Field;
[System.Xml.Serialization.XmlAttributeAttribute()]
public MyEnumType Attr1
{
get
{
return this.attr1Field;
}
set
{
this.attr1Field= value;
}
}
[System.Xml.Serialization.XmlAttributeAttribute()]
public MyEnumType Attr2
{
get
{
return this.attr2Field;
}
set
{
this.attr2Field= value;
}
}
}
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlRootAttribute("Context", Namespace = "", IsNullable = false)]
public partial class MyContextType : BaseType
{
private string element1Field;
private string element2Field;
[System.Xml.Serialization.XmlElementAttribute(Order = 0)]
public string Element1
{
get
{
return this.element1Field;
}
set
{
this.element1Field = value;
}
}
[System.Xml.Serialization.XmlElementAttribute(Order = 1)]
public string Element2
{
get
{
return this.element2Field;
}
set
{
this.element2Field = value;
}
}
}
public enum MyEnumType
{
/// <remarks/>
False,
/// <remarks/>
True,
}
}
Mein Serializer Code:
var mydoc = new XmlDocument();
var context = new MyContextType() { Element1 = "Car", Element2 = "Bike", Attr1 = "id1", Attr2 = "id2" };
using (MemoryStream stream = new MemoryStream())
{
XmlSerializer s = new XmlSerializer(typeof(MyContextType));
s.Serialize(XmlWriter.Create(stream), context);
stream.Flush();
stream.Seek(0, SeekOrigin.Begin);
mydoc.Load(stream);
}
XML-Output-:
<MyContext>
<Element1>Happy</Element1>
<Element2>10</Element2>
</MyContext>
Aber ich möchte, dass die Ausgabe als
<MyContext attr1 = "False" attr2="False">
<Element1>Happy</Element1>
<Element2>10</Element2>
</MyContext>
'XmlSerializer' wird nur öffentliche Klassen und Mitglieder serialisieren. Wie es ist, kann Ihre 'MyContext' Klasse überhaupt nicht serialisiert werden. Können Sie bitte ein vollständiges Beispiel (https://stackoverflow.com/help/mcve) Ihres Problems angeben? – dbc
Ihr Code wird nicht kompiliert und Ihre Klassen und Eigenschaften sind nicht öffentlich. Sobald ich diese Probleme plausibel gemacht habe, kann ich Ihr Problem nicht reproduzieren. Siehe https://dotnetfiddle.net/ueui7z – dbc
dbc: Das Codebeispiel wurde wie gewünscht aktualisiert. überprüfen Sie bitte und lassen Sie mich wissen – KKR