避免在未知输入上进行拳击/拆箱

时间:2011-02-25 16:42:42

标签: vb.net formatting .net-1.1 boxing unboxing

我正在创建一个解析XML并检索一些数据的应用程序。每个xml节点指定数据(const),记录集的列名以从(var)获取数据,可能的数据值的子集取决于某些条件(枚举)和其他。它还可以与数据一起指定必须向用户显示数据的格式。

问题在于,对于每个节点类型,我需要以不同的方式处理值并执行一些actinon,因此,对于每个节点,我需要将返回值存储在临时变量中,以便稍后格式化...我知道我可以在那里格式化并返回它,但这意味着重复自己,我讨厌这样做。

所以,问题是:如何在临时变量中存储要返回的值,同时在类型未知且我不能使用泛型时避免装箱/拆箱?

P.S。:我正在设计解析器,XML Schema以及将填充记录集的视图,因此所有更改都是合理的。


更新

我不能发布代码也不能发布XML值,但这是XML结构和实际标签。

<?xml version='1.0' encoding='utf-8'?>
<root>
    <entity>

        <header>
            <field type="const">C1</field>
            <field type="const">C2</field>

            <field type="count" />
            <field type="sum" precision="2">some_recordset_field</field> 

            <field type="const">C3</field>
            <field type="const">C4</field>
            <field type="const">C5</field>
        </header>

        <detail>
            <field type="enum" fieldName="some_recordset_field">
                <match value="0">M1</match>
                <match value="1">M2</match>
            </field>
            <field type="const">C6</field>

            <field type="const">C7</field>
            <field type="const">C8</field>
            <field type="var" format="0000000000">some_recordset_field</field>
            <field type="var" format="MMddyyyy">some_recordset_field</field>
            <field type="var" format="0000000000" precision="2">some_recordset_field</field>
            <field type="var" format="0000000000">some_recordset_field</field>
            <field type="enum" fieldName ="some_recordset_field">
                <match value="0">M3</match>
                <match value="1">M4</match>
            </field>
            <field type="const">C9</field>
        </detail>

    </entity>
</root>

1 个答案:

答案 0 :(得分:-1)

您是否尝试过使用 var 类型?这样您就不需要知道每个节点的类型。此外,您的方案的一些小样本将是有用的。