我想为我的商店系统正确地处理给定值(例如双精度)的单位。
在数据库中,它是全局配置的,实际使用的是哪个单元。基本单元由全局配置设置。
现在,我喜欢从模型中获取值的最隐含的方法。
我想要避免的是:
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; }
在属性中,所有内容都是为了转换而处理的。我已经看到一场讨论,认为这是一种糟糕的方式。
我真的很想知道您对此的想法/库/解决方案。
发布于 2018-06-13 03:50:02
我认为这一切都归结于设计原则。是的,你可以按照你的想法去做,但是你仍然会在一些转换中添加一个库或者硬编码。
设计的一个常见问题是,我们喜欢把事情过于简单化。你的属性可以被认为是双精度的,但这并不是它们真正的本质,它们是单元。
然后,您可以为上面提到的每种类型的单元创建一个类
public LengthUnit Width { get; set; }
public WeightUnit Weight { get; set; }
每个unit类都可以从一个接口继承,该接口提供您需要的任何东西,比如Unit factor或转换为另一个单元。
https://stackoverflow.com/questions/50824404
复制相似问题