Я создаю приложение, которое анализирует XML и извлекает некоторые данные. Каждый узел xml определяет данные (const), имя столбца набора записей для получения данных из (var), подмножество возможных значений данных в зависимости от некоторого условия (enum) и других. Он также может указывать, наряду с данными, формат, в котором данные должны быть показаны пользователю.
Дело в том, что для каждого типа узла мне нужно обрабатывать значения по-разному и выполнять некоторые действия, поэтому для каждого узла мне нужно сохранить возвращаемое значение во временной переменной, чтобы позже отформатировать его ... Я знаю, что могу отформатировать его прямо здесь и вернуть, но это значило бы повторяться, и я ненавижу это делать.
Итак, вопрос: как я могу сохранить возвращаемое значение во временной переменной, избегая упаковки / распаковки, когда тип неизвестен, и я не могу использовать дженерики?
P.S.: я разрабатываю синтаксический анализатор, схему XML и представление, которое заполнит набор записей, поэтому все изменения будут правдоподобными.
Обновить
Я не могу опубликовать код или значения 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>