2012-07-12 74 views
1

我有我移動到C#重構舊代碼從J#到C#

XmlNodeList itemTransferOutNodes = 
       strXML.GetElementsByTagName("ItemTransferOut"); 
    XmlElement itemInfo = 
       itemTransferOutNodes.Item(itemTrOutNodesCnt) 
            .ChildNodes.Item(0) 
            .get_Item("itemInfo"); 

我沒有看到在所謂get_ItemXmlNodeList方法C# API一些老J#代碼。 要我應該改變get_Itemc#

謝謝。

+0

您可以添加使用澄清XML的樣本你的問題。 – 2012-07-12 08:22:09

回答

1

J#不具有屬性的支持,如C#做,所以他們是通過使用方法來「僞造」的。你可以在that matter on MSDN找到更多的信息。如果一個C#對象有一個屬性名爲SomeProperty:

public class Dummy { 
     public string SomeProperty { get; set; } 
} 
在J#

,你必須調用get_SomeProperty()和set_SomeProperty(字符串值):

public class Dummy 
{ 
     private String someProperty; 

     /** @property */ 
     public void set_SomeProperty(String val) { 
      someProperty = val; 
     } 

     /** @property */ 
     public String get_SomeProperty() { 
      return someProperty; 
     } 
} 

而反過來也是如此。

如果您在J#中找到名爲get_xxx或set_xxx的類方法,則很可能在C#中該對象具有名爲xxx的屬性。

所以基本上,正如其他mentionned,你必須使用Item屬性在代碼:

XmlNodeList itemTransferOutNodes = 
        strXML.GetElementsByTagName("ItemTransferOut"); 

XmlElement itemInfo = 
        itemTransferOutNodes.Item(itemTrOutNodesCnt) 
        .ChildNodes.Item(0).Item["itemInfo"]; 

希望幫助:)

1

有幾種方法,我會建議LINQ to XML

沒有看到你的XML我想這會是這樣的:

strXml.Root 
     .Decendants("ItemTransferOut") 
     .First(xele => xele.Name.LocalName == "itemInfo")