Преобразование измерений на лету - PullRequest
0 голосов
/ 22 июня 2009

Я хотел бы спросить re: преобразование измерений на лету, вот детали:

Требование: для отображения единиц измерения с учетом настроек. проблемы: - В базе данных будет храниться только базовое (нейтральное) единичное измерение, и оно принимается один раз.

  • Элемент управления Grid имеет прямую привязку к нашему бизнес-объекту, поэтому ему сложно выполнить преобразование.

Проблема:

Как отобразить другую единицу измерения (следовать настройке), считая, что элементы управления привязаны к бизнес-объекту?

Ваша любезная помощь будет оценена. Спасибо

ikadewi

1 Ответ

0 голосов
/ 22 июня 2009

Если я правильно понял ваш вопрос (вы немного расплывчаты ...), вы хотите сохранить данные измерений одним способом, но дать пользователям возможность отображать их по-разному (используя разные единицы измерения). Вы не указываете, какую технологию / языковую среду вы используете, но есть (по крайней мере) один довольно простой способ сделать это: создать класс конвертера.

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

class LenghtConverter {

    double ToCentimeters(double millimeters) {
        // 1 centimeter = 10 millimeters
        return millimeters / 10;
    }

    double ToInches(double millimeters) {
        // 1 inch = 25.4 millimeters
        return millimeters / 25.4
    }

    // You get the drift. Add whatever conversions you need. If you wish, 
    // you can return strings instead of numbers, and append the unit
    // signature as well.
}

Теперь в вашей сетке вы отображаете ваши данные с неким синтаксисом представления. Я придумываю что-то, чтобы дать вам идею, и так как я в ASP.NET, синтаксис очень похож на это. Надеюсь, вы меня извините за это =)

Вместо просто

<%= MyMeasurement.Data %>

для отображения данных измерений в том виде, в котором они были сохранены, вы выводите с помощью

<%= LenghtConverter.ToInches(MyMeasurement.Data) %>

, который будет отображать результат в дюймах.

Если вы на самом деле используете C # (или, я полагаю, VB.NET), в .NET 3.5 есть хорошая функция, называемая Методы расширения , которую вы можете использовать вместо этого. Это позволило бы вам выводить текст с более прохладным и более упорядоченным синтаксисом

<%= MyMeasurement.Data.ToInches() %>
...