2016-08-08 4 views
0

Web APIの最適なソリューションを探しています。数式を評価し、プロパティフィールドに結果/出力を設定する方法を探しています。WEB API 2の各フィールドの数式を動的に評価する方法

私は次の2つのプロパティを持つエンティティを持っているとします。同様に、私は異なる数式で多くのプロパティを持つことができます。

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; } 

} 

アイデアはUnitConversionクラスであるか、カスタム属性、いないことを確認して、値とキーを読み、それに応じて、データベース内の式につきように変換します。

私のジレンマはWEB APIでこれを実装できません。私はカスタム属性で試していましたが、これまでのところ運がありません。

もっと詳しい情報が必要な場合は教えてください。私はフロントエンドでAngularjsを使用しています。

解決策に関するアドバイスは非常に高く評価されています。

答えて

0

私の意見では最良の方法は、フィールド名とソースユニットを伴わないでください

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

のような多くの異なる単位でエンティティを作成することです。それはただの練習です。あなたはちょうど異なる単位で結果を望んでいます - ソース単位は重要ではありません。

あなたのモデルを見てあなたの主な問題は、あなたのデータを分離することとあなたが何をしたいかに問題があるということです。

次に、2つの方法で変換を解決できます。

最初に、変換のために入力値と単位として使用する1つのWebApiアクションメソッドを作成し、変換を実行して結果を返すためにいくつかのバッキングヘルパークラスを使用できます。 (startegy /テンプレートメソッドと工場パターンについて読む)。

第2は、変換する各(サイズ/値)ごとにサービスクラスを作成し、ユニット変換ごとにメソッドを作成することです。 (このアプローチはもっと多くのコードを必要とし、一般的ではありません)。

関連する問題