2017-09-22 13 views
0

に出力するSwitch..Caseに値を変換する手助けが必要と私はは、私はイベントコードのためのスイッチ..caseを作成したXML

ここでイベントステータスのためのXElementにイベントコードを変換するかどうかはわかりません

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) 

が、それはこのようなものになるだろう:

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ですが、私は変換するか、または値を読み取るしようとしている何をされていますあなたがあなたをXMLするためにこれを書きたいとき

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

:あなたは、のようなものを入力としてEvCodes値を受け入れ、あなたはXElementオブジェクトに追加したい文字列を返す拡張メソッドを作成することができ

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

答えて

0

その後、として拡張メソッドを呼び出します:

new XElement("EventStatus", EventCode.EvCodes.Delivered.ToXml()); 
+0

この上のいくつかのエラーを取得:\t 1.'Extensionメソッドはトップレベル静的クラスで定義する必要がありますが、 EvMapperはネストされたクラスです\t 2. 'EvCodes'という名前は現在のコンテキストに存在しません – user2091766

+0

コンパイラは間違っていません 拡張メソッドは推奨です。使用したい場合は、別の静的クラスに移動する場合は、値のパラメータから 'this'キーワードを削除して、ToXmlメソッドを呼び出し元のクラスと同じクラスに配置することができます EvMapperが何であるか分かりませんあなたのサンプルコードで – lowds

関連する問題