2015-04-10 3 views
2

Я пишу парсер для Articy Draft, инструмент для написания, который экспортирует весь проект в виде XML-документа. Большая часть из них довольно проста, но способ обработки объектов немного сложнее.Правильный тип данных для динамических данных?

По существу, каждый объект имеет набор функций, каждый из которых представляет собой набор свойств. Каждое свойство может быть либо int, либо строкой, либо перечислением, и имеет имя (строка) и идентификатор (long).

Я пытаюсь найти лучший способ хранения этих данных в каждом объекте. Я бы хотел, чтобы он был общим, а не имел предопределенные объекты, поскольку это более надежное будущее. Наверное, я слишком неопытен с C#, чтобы знать правильный способ его хранения. Я только действительно нужно для индексации, основанного на имени поля данных. Возможность индексирования по ID также была бы бонусом, но вовсе не обязательным.

У меня могло бы быть три словаря, по одному для int, перечисления и строки. Индекс каждого из них основан на имени или индексе, в зависимости от того, что я предпочитаю. Кажется немного грязным, имея три разных коллекции, но, возможно, это лучший способ.

Я могу использовать DataColumns для создания DataTable в каждом объекте с столбцами для ID, имени, типа данных и значения, но тогда вам понадобятся три столбца значений (или два, я думаю, поскольку перечисление может быть сохранено как int) и это тоже немного грязно.

Это проблема, которую я могу легко решить с помощью моих текущих знаний, но это просто ощущение, что есть более элегантное решение, чем я знаю, и есть возможность для меня расширить знания C# немного здесь.

+0

Try, чтобы убедиться, что есть фактический, хорошо определенный вопрос просил, и все больше людей ответит/ответит на ваш вопрос. Здесь вы могли бы спросить: «Какой будет самый простой (или лучший, или самый красивый, или самый элегантный) метод, который я мог бы использовать?» – Numeri

ответ

0

Я рекомендую делать некоторые чтения в C# ExpandoObject который я считаю, будет лучшим решением для вас

C# ExpandoObject

Смежные вопросы