c# - 用于字段单位转换的 C# 隐式获取
问题描述
我想为我的商店系统正确处理给定值(例如双倍)的单位。
在数据库中其全局配置,实际使用哪个单位。基本单位由全局配置设置。
现在我喜欢最隐含的方式从模型中获取我的值。
我想避免的是:
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; }
在 Attribute 中,一切都被处理以进行转换。我已经看到一个讨论,这是一种不好的方式。
我真的很想知道您对此的想法/库/解决方案..
解决方案
我认为这一切都归结为设计原则。是的,您可以做您想做的事,但您最终仍会在某些转换中添加库或硬编码。
设计的一个常见问题是我们喜欢过度简化事物。您的属性可以被认为是双精度的,但这并不是它们的真正含义,它们是单位。
然后你可以为上面提到的每种类型的单元设置一个类
public LengthUnit Width { get; set; }
public WeightUnit Weight { get; set; }
每个 Unit 类都可以从一个接口继承,该接口提供您需要的任何内容,例如 Unit 因子或转换为另一个单位。
推荐阅读
- r - 如何从本地到远程服务器运行 RScript
- arduino - 使用 MIT App Inventor 读取蓝牙数据
- python - 类引用的类型提示是什么?
- spring - 入站通道适配器抛出“没有可用的输出通道或回复通道标头”错误
- python - 如何使用 Boto3 凭证发出 AWS AWIS UrlInfo api 请求
- python - 基于重叠目标将多个索引折叠成组
- java - Java8 Streams - 如何将内部映射的键值从“null”字符串修改为空对象
- python - 我只需要两个列表的第一个 p 标签中的文本
- javascript - 用vue动态改变body背景
- android-source - 我可以使用新的语言区域设置和键盘布局向 Android 发送提交吗?