【问题标题】:How to dynamically evaluate the mathematical formulas for each field in WEB API 2如何动态评估WEB API 2中每个字段的数学公式
【发布时间】:2016-12-14 11:36:20
【问题描述】:

我正在寻找关于如何评估数学公式并在属性字段中设置结果/输出的 Web API 中的最佳解决方案。

假设我有以下具有两个属性的实体。同样,我可以有许多具有不同公式的属性。

public class DomainEntites
{

    public float centimetertometer{ get; set; }
    public float inchtofeet { get; set; }

}

我的数据库中保存了如下公式。

     key              formula
     ----             -------
     c_m              a * 1000

我的想法是传递密钥并在适用的任何地方执行公式。像这样的东西,这样我就可以降低代码的复杂性并使其通用。

public class DomainEntites
{
    [UnitConversion(key="c_m")]
    public float centimetertometer{ get; set; }
    [UnitConversion(key="inch_feet")]
    public float inchtofeet { get; set; }

}

Idea 是 UnitConversion 类或者可能是自定义属性,不确定,是否会读取 value 和 key 并根据数据库中的公式进行相应的转换。

我的困境是我无法在 WEB API 中实现这一点。我正在尝试使用自定义属性,但到目前为止没有运气。

如果有人需要更多信息,请告诉我。我在前端使用 Angularjs。

非常感谢任何有关解决方案的建议。

【问题讨论】:

    标签: .net angularjs asp.net-web-api


    【解决方案1】:

    在我看来,最好的方法是创建具有许多不同单位的实体,例如

    public class Length
    {
        public float Centimeters{ get; set; }
        public float Inches { get; set; }
    }
    

    不涉及带有字段名称的源单元。这只是床上练习。您只想得到不同单位的结果 - 源单位无关紧要。

    通过查看模型,您的主要问题是您无法将数据与您想用它做什么分离。

    那么你可以通过两种方式解决转换。

    首先,您可以创建一个用于转换的 WebApi 操作方法,该方法将作为输入值和单位,并使用一些支持帮助程序类进行转换并返回结果。 (阅读有关 startegy/模板方法和工厂模式的信息)。

    其次是为您要转换的每个(大小/值)创建服务类,并在该类中为每个单位转换创建方法。 (这种方法需要更多的代码并且不太通用)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-15
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 2012-05-29
      相关资源
      最近更新 更多