【问题标题】:Refactoring Old code from J# to C#将旧代码从 J# 重构为 C#
【发布时间】:2012-07-12 08:08:54
【问题描述】:

我有一些旧的 J# 代码要迁移到 C#

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

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

谢谢。

【问题讨论】:

  • 您能否添加一个您正在使用的 XML 示例来澄清您的问题。

标签: c# xml xmlnodelist


【解决方案1】:

J# 不像 C# 那样支持属性,因此它们是通过使用方法来“伪造”的。您可以在that matter on MSDN 上找到更多信息。如果 C# 对象具有名为 SomeProperty 的属性:

 public class Dummy {
      public string SomeProperty { get; set; }
 }

在 J# 中,您必须调用 get_SomeProperty() 和 set_SomeProperty(string value):

 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"];

希望有帮助:)

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:
      XmlElement itemInfo = itemTransferOutNodes.Item(itemTrOutNodesCnt)
                                                .ChildNodes
                                                .Item(0)["itemInfo"]; 
      

      XMLNode.Item documentation on MSDN

      【讨论】:

        【解决方案4】:

        使用 XmlNode.Item Property (String) 。来自msdn:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-01-27
          • 2019-03-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-01-21
          相关资源
          最近更新 更多