• Универсальный конвертер данных на платформе .Net Framework
    0
    Да, нам нужен конфиг регулируемый пользователем. Думаю если конфиг из текста туда получится затащить, то может и получится, надо пробовать. В любом случае это будет надстройка над automapper (сразу приходит мысль, а не сделать ли лайт аналогию с маппером с нуля)
  • Универсальный конвертер данных на платформе .Net Framework
    0
    Если не ошибаюсь, AutoМapper это меппер типов, причем детерменированный (можно настроить только из кода).
    Например, нужно заполнить класс у которого член Product.Item c типом Object. Согласно требований задачи, в Item можно назначить экземпляр объекта один из типов Struct1 и Struct2, заполнение которых выполняется по разному — не уверен, что маппер с ним справится без костылей
  • Универсальный конвертер данных на платформе .Net Framework
    0
    SplitAndCalc — делает следующее парсит «31000 USD» на 31000 и «USD», заходит во внешний источник данных (например БД) берет курс USD/RUB, пересчитывает стоимость в рубли и возращает значение.
    Правило это код, который для заданного пути возращает значение для заполнение узла.
    Да, справочники правил, и их применения должны где-то храниться.
    Про ‘TargetCurrency’ — это опечатка, исправил
    Мысль статьи в том, что бы создать параметризуемый конструктор конвертаций различных узлов, что бы пользователь мог не сильно вдаваясь в подробности реализации встроенных правил мог ими пользоваться и главное читать (не код). Ну и XML это просто пример формата, а так конвертер способен работать с любыми форматами.
    Рефлексию мы используем для быстрого достпа к данным объекта и сборки целевого экземпляра контейнера.
    Найду время допишу в статью еще одно правило, для общего понимания идеи.
  • Универсальный конвертер данных на платформе .Net Framework
    0
    Придется менять настройки правил. В примере статьи правило возращает заполненный Msrp объект. Это сделано для простого примера и не совсем универсальное правило. В реальном коде мы стараемся делать максимально универсальные правила, которые могут работать с любой структурой. Например можно создать три правила для каждого узла: Vehicle.Msrp, Vehicle.Msrp.Currency, Vehicle.Msrp.Value, тогда они будут возращать скалярные значения и эти правила можно применить многократно.
  • Универсальный конвертер данных на платформе .Net Framework
    0
    У нас система работает с множеством внешних API с различными форматами. Привязка к XML свяжет нам руки. И еще, в большинстве случаев у нас идет конвертация во внешние форматы прямо из модели данных (вычитанной из БД), которая является тоже контейнером. Т.е. шаги (1-2) исключаются
  • Универсальный конвертер данных на платформе .Net Framework
    0
    да, спасибо за линк. но это тоже своего рода кеширование