C # Неявное получение для преобразования поля - PullRequest
0 голосов
/ 12 июня 2018

Я бы хотел правильно обработать единицу для данного значения (например, double) для моей системы магазинов.

В базе данных это глобально сконфигурировано, какая единица фактически используется.Базовый блок задается глобальным конфигом.

Теперь мне нравится неявный способ получить мои значения из модели.

Чего я хотел бы избежать, так это:

    public class BadWay
    {
        private double _width;
        public double Width
        {
           get { return LengthConverter.Convert(_width, GlobalConfig.LengthConversionFactor); }
           set { _width = value; }
        }
      }

Что я действительно хотел бы:

    [LengthUnit]
    public double Width { get; set; }

    [WeightUnit]
    public double Weight { get; set; }

А в Атрибуте все обрабатывается для конвертации.Я уже видел дискуссию, что это плохой путь.

Мне очень нравится знать ваши идеи / библиотеки / решения для этого ..

1 Ответ

0 голосов
/ 12 июня 2018

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

Распространенная проблема дизайна - то, что нам нравится упрощать вещи.Ваши свойства могут рассматриваться как двойные, но на самом деле это не то, что они есть, а единицы.

Тогда вы можете просто иметь класс для каждого типа модуля, который вы упомянули выше

public LengthUnit Width { get; set; }

public WeightUnit Weight { get; set; }

Каждый класс модулей может наследовать от интерфейса, который предоставляет все, что вам нужно, например, фактор модуля или преобразование в другойблок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...