i am generating WCF service , and there are multiple classes that serialize incorectlly (they have skipped properties), i extracted one of the classes to simple console app, where i just set 2-3 properties and serialize, and it still ends up with missing property (Missing property ArticleItemId)
// See https://aka.ms/new-console-template for more information
using System.Xml.Serialization;
using System.Xml;
using testSerialization;
var operation = new TrySerial()
{
ArticleItemId = 123123,
OriginalArticleItemId = 234234,
ToLocation = "IN_LOCATION",
ArticleItemIdentification = "ArticleItemId",
};
XmlSerializer xsSubmit = new XmlSerializer(typeof(TrySerial));
var subReq = operation;
var xml = "";
using (var sww = new StringWriter())
{
using (XmlWriter writer = XmlWriter.Create(sww))
{
xsSubmit.Serialize(writer, subReq);
xml = sww.ToString();
}
}
Console.WriteLine(xml);
Console.ReadLine();
public class TrySerial
{
private int articleItemIdField;
private bool articleItemIdFieldSpecified;
private string articleItemIdentificationField;
private string serialField;
private string toLocationField;
private decimal numberOfItemsField;
private bool numberOfItemsFieldSpecified;
private int originalArticleItemIdField;
private bool originalArticleItemIdFieldSpecified;
[System.Xml.Serialization.XmlElement(Order = 0)]
public int ArticleItemId
{
get
{
return this.articleItemIdField;
}
set
{
this.articleItemIdField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlIgnoreAttribute()]
public bool ArticleItemIdSpecified
{
get
{
return this.articleItemIdFieldSpecified;
}
set
{
this.articleItemIdFieldSpecified = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElement(Order = 1)]
public string ArticleItemIdentification
{
get
{
return this.articleItemIdentificationField;
}
set
{
this.articleItemIdentificationField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElement(Order = 2)]
public string Serial
{
get
{
return this.serialField;
}
set
{
this.serialField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElement(Order = 3)]
public string ToLocation
{
get
{
return this.toLocationField;
}
set
{
this.toLocationField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElement(Order = 4)]
public decimal NumberOfItems
{
get
{
return this.numberOfItemsField;
}
set
{
this.numberOfItemsField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlIgnoreAttribute()]
public bool NumberOfItemsSpecified
{
get
{
return this.numberOfItemsFieldSpecified;
}
set
{
this.numberOfItemsFieldSpecified = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElement(Order = 5)]
public int OriginalArticleItemId
{
get
{
return this.originalArticleItemIdField;
}
set
{
this.originalArticleItemIdField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlIgnoreAttribute()]
public bool OriginalArticleItemIdSpecified
{
get
{
return this.originalArticleItemIdFieldSpecified;
}
set
{
this.originalArticleItemIdFieldSpecified = value;
}
}
}
type here
I have no idea why it does this.
Extracted method, tried renaming (if i rename property it serializes the renamed, but i cannot rename it since its api that requires this name).
I would like to get a hint what can cause this strange behaviour.