即时测量转换

时间:2009-06-22 09:49:00

标签: measurement units-of-measurement

我想问一下:动态测量转换,这里是细节:

要求:使用考虑设置显示单位测量。 关注: - 只有基本(中性)单位测量将存储在数据库中,并且它被确定一次。

  • 网格控件直接绑定到我们的业务对象,因此它具有转换值的复杂性。

问题:

如何显示不同的单位测量(按照设置),考虑控件是否绑定到业务对象?

您的帮助将不胜感激。谢谢

ikadewi

1 个答案:

答案 0 :(得分:0)

如果我正确地理解了您的问题(您有点模糊......),您希望以一种方式存储测量数据,但是让用户可以选择以不同的方式显示它(使用不同的单位)。您没有指定您正在使用的技术/语言环境,但是(至少)有一种非常简单的方法:创建转换器类。

如果你的测量数据是长度,以毫米为单位,这里有一些伪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() %>