using System.Xml.Serialization;
using JetBrains.Annotations;
private static readonly string _timestamp = DateTime.UtcNow.ToString("o");
public static void Main()
var getNextRequest = new GetNextRequest
SifSystemControl = new SystemControl
MessageId = Guid.NewGuid().ToString(),
SystemControlData = new SystemControlData
Console.WriteLine(getNextRequest.Serialize());
[XmlType(AnonymousType = true, Namespace = "http://www.sifinfo.org/infrastructure/2.x")]
[XmlRoot(Namespace = "http://www.sifinfo.org/infrastructure/2.x", IsNullable = false, ElementName = "SIF_Message")]
public class GetNextRequest
[XmlElement(ElementName = "SIF_SystemControl")]
public SystemControl SifSystemControl { get; set; }
public decimal Version { get; set; }
[XmlElement(ElementName = "SIF_Header")]
public Header Header { get; set; }
[XmlElement(ElementName = "SIF_OriginalSourceId")]
public string OriginalSourceId { get; set; }
[XmlElement(ElementName = "SIF_OriginalMsgId")]
public string OriginalMessageId { get; set; }
[XmlElement(ElementName = "SIF_Status")]
public Status Status { get; set; }
public string Serialize()
var mySerializer = new XmlSerializer(GetType());
using var textWriter = new StringWriter();
mySerializer.Serialize(textWriter, this);
return textWriter.ToString();
[XmlType(AnonymousType = true, Namespace = "http://www.sifinfo.org/infrastructure/2.x")]
[XmlRoot("SIF_SystemControl")]
public class SystemControl
[XmlElement(ElementName = "SIF_Header")]
public Header Header { get; set; }
[XmlElement(ElementName = "SIF_SystemControlData")]
public SystemControlData SystemControlData { get; set; }
[XmlType(AnonymousType = true, Namespace = "http://www.sifinfo.org/infrastructure/2.x")]
[XmlRoot("SIF_SystemControlData")]
public class SystemControlData
[XmlElement(ElementName = "SIF_GetMessage")]
public object GetMessage { get; set; }
[XmlType(AnonymousType = true, Namespace = "http://www.sifinfo.org/infrastructure/2.x")]
[XmlElement(ElementName = "SIF_MsgId")]
public string MessageId{ get; set; }
[XmlElement(ElementName = "SIF_Timestamp")]
public string Timestamp{ get; set; }
[XmlElement(ElementName = "SIF_SourceId")]
public string SourceId{ get; set; }
[Serializable, PublicAPI]
[XmlRoot(ElementName = "SIF_MessageSIF_AckSIF_Status")]
[XmlElement(ElementName = "SIF_Code")]
public byte Code { get; set; }