需要帮助将Switch..Case中的值转换为输出到XML

时间:2017-09-22 15:24:01

标签: c# xml

我为事件代码创建了一个开关..包,我不知道如何将事件代码翻译成事件状态的XElement

这是EventCode类

public class EventCode
    {
        public enum EvCodes {Delivered, DispatchedForDelivery, 
        DepartedFromTerminal, ArrivedAtDestinationTerminal};
        public static void Main()
        {
            string val = "Dispatched For Delivery";
            switch ((EvCodes)Enum.Parse(typeof(EvCodes), val.Replace(" ", "")))
            {
                case EvCodes.DispatchedForDelivery:
                case EvCodes.Delivered:
                    Console.WriteLine("OD");
                    break;
                case EvCodes.DepartedFromTerminal:
                    Console.WriteLine("L1");
                    break;

            }

        }

以下是我试图转换或读取值的EventStatus:

rspxml.Root.Add(
new XElement("API", "4.0"),
new XElement("PackageTrackingInfo",
new XElement("TrackingNumber", prc.ProNumber)
),

new XElement("TrackingEventHistory", 
prc.History.Cast<Saia.Data.General.Shipment.HistoryItem>().Select(item => 
new XElement("TrackingEventDetail",
new XElement("EventStatus", prc.History,
new XElement("EventReason", prc.History),
new XElement("EventDateTime", prc.History)

会是这样的:

new XElement("EventStatus", EventCode.EvCodes.Delivered

1 个答案:

答案 0 :(得分:0)

您可以创建一个接受EvCodes值作为输入的扩展方法,并返回您希望添加到XElement的String,如:

batch_size

如果您希望将此内容写入XML,则可以将扩展方法调用为:

public static string ToXml(this EventCode.EvCodes value)
{
  switch(value)
  {
    case EvCodes.DispatchedForDelivery:
    case EvCodes.Delivered:
      return "OD";
    case EvCodes.DepartedFromTerminal:
      return "L1";
  }
}