将旧代码从J#重构为C#



我有一些旧的J#代码,我正在转移到C#

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

我在C#中看不到名为get_ItemXmlNodeList方法的API。我应该在c#中更改get_Item

谢谢。

J#不像C#那样支持属性,所以它们是通过使用方法"伪造"的。你可以在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的属性。

因此,基本上,正如其他人所说,您必须在代码中使用Item属性:

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

希望能有所帮助:)

有几种方法,我推荐LINQ到XML

如果没有看到你的XML,我想它会是这样的:

strXml.Root
      .Decendants("ItemTransferOut")
      .First(xele => xele.Name.LocalName == "itemInfo")
XmlElement itemInfo = itemTransferOutNodes.Item(itemTrOutNodesCnt)
                                          .ChildNodes
                                          .Item(0)["itemInfo"]; 

MSDN 上的XMLNode.Item文档

使用XmlNode.Item属性(字符串)。来自msdn:

获取具有指定Name的第一个子元素。

相关内容

  • 没有找到相关文章

最新更新