我正在编写一个XML编写器,并且可以编写这个...
<?xml version="1.0" encoding="utf-8"?>
<mappings>
<entry name="Iasanator">
<item code="Red">He Needs Help</item>
</entry>
</mappings>
...但我需要能够将不同数量的 id =“whatever”语句传递到XMLWriter.WriteHeader(#这些需要扩展)sub。
<header id="whatever" href="this" code="that" name="and so on".......>
由于重载sub,我可以提出两个,但是如何在不为每个可能的情况编写单独的重载子的情况下输入... 15或者其他东西?
编辑:Nkvu,我自己解决了这个问题,然后读到你有类似的想法。 伟大思想相似。我使用了一种类似你建议的数组,除了我使用字典列表,其中“parameters = New Dictionary(Of String,String)”。可以在http://pastebin.com/03TuX0Pd
找到整个XML Writer如果你发现其中一些令人困惑,(我不是评论最好的东西)随意发表评论并提出问题。我很乐意回答。
答案 0 :(得分:1)
你能发布到目前为止的VB.NET代码吗?
从广义上讲,我可以想到两个选择:
你可能想要this这样的东西,你可以在其中传递可变数量的参数,然后迭代它们并决定如何处理它。
每个参数都可以是您的标题ID(如果它是一个字符串或某个类似整数的基类型),或者您可以传入一个类/复杂类型(例如,您可以拥有一个Header
类,该类具有以下属性: ID,href,代码,名称等)。
对于复杂类型,您的签名看起来像:
Public Sub DoStuff(ParamArray list() as HeaderClass)
你会称之为:
DoStuff(headerObj1, headerObj2, headerObj3)
其中headerObj1等是您之前创建的对象
你也可以只是形成一个List或其他集合类型并将其传递给你的子。
所以你的子签名看起来像:
Public Sub DoStuff(headers as List(of HeaderClass))
你会称之为:
Dim headerList As List(Of HeaderClass) = New List(Of HeaderClass)
headerList.Add(headerObj1)
headerList.Add(headerObj2)
headerList.Add(headerObj3)
DoStuff(headerList)
然后您的子点可以遍历列表并执行需要完成的操作。