2016-08-08 85 views
0

Ich bin auf der Suche nach einer besten Lösung in Web-API für wie die mathematischen Formeln zu bewerten und das Ergebnis im Eigenschaftenfeld festlegen.Wie man die mathematischen Formeln für jedes Feld in WEB API dynamisch auswertet 2

Sagen wir, ich habe die folgende Entität mit zwei Eigenschaften. Ebenso könnte ich viele Eigenschaften mit verschiedenen Formeln haben.

public class DomainEntites 
{ 

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

} 

Ich habe die Formeln wie unten in meiner Datenbank gespeichert.

Meine Idee ist, den Schlüssel zu übergeben und die Formel auszuführen, wo es anwendbar ist. so etwas, damit ich die Komplexität des Codes reduzieren und generisch machen kann.

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

} 

Idee ist UnitConversion Klasse oder benutzerdefinierte Attribute, nicht sicher, wird den Wert und die Schlüssel der lesen und wandelt entsprechend gemäß der Formel in der Datenbank.

Mein Dilema ist, ich bin nicht in der Lage, dies in WEB-API zu implementieren. Ich habe versucht mit benutzerdefinierten Attribut, aber bisher kein Glück.

Lassen Sie mich wissen, wenn jemand mehr Informationen benötigt. Ich benutze Angularjs im Frontend.

Jede Beratung über die Lösung wird sehr geschätzt.

Antwort

0

Meiner Meinung nach der beste Ansatz wäre Einheit mit vielen verschiedenen Einheiten zu schaffen, wie

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

nicht Quelleneinheit mit Feldnamen beinhalten Sie. Es ist nur Bettpraxis. Sie wollen nur Ergebnis in verschiedenen Einheiten - Quelle Einheit spielt keine Rolle.

Ihr Hauptproblem beim Betrachten Ihres Modells ist, dass Sie Probleme mit der Trennung Ihrer Daten haben und was Sie damit machen wollen.

Dann können Sie die Umwandlung auf 2 Arten lösen.

Zuerst können Sie eine WebApi-Aktionsmethode für die Konvertierung erstellen, die als Eingabewert und Einheit verwendet wird und eine Backing-Hilfsklasse verwendet, um die Konvertierung durchzuführen und das Ergebnis zurückzugeben. (Lesen Sie über Start/Template-Methode und Factory-Muster).

Zweitens erstellt die Serviceklasse für jedes Element (Größe/Wert), das Sie konvertieren möchten, und innerhalb dieser Klasse erstellen Sie eine Methode für jede Einheitenkonvertierung. (Dieser Ansatz erfordert viel mehr Code und ist weniger generisch).