2012-03-26 21 views
1

Ich habe mehrere DTO und entsprechende POCOs.DTO POCO Umwandlung

Was ist die empfohlene Methode, um zwischen ihnen zu konvertieren und wo die Konvertierungsfunktion zu finden ist.

Meine ursprüngliche Idee ist es, zwei Konvertierungsfunktionen in POCO zu setzen und sie ToPOCO und ToDTO zu nennen.

Aber gibt es bessere Ideen dafür oder vielleicht eine Erweiterung Methoden?

Danke, für Ideen.

+0

Lustig, vernachlässigen Sie, Sprache/Plattform zu erwähnen. Von der Art, wie Sie Dinge nähern, würde ich ** Java ** erraten, aber die Namensgebung zu sehen, würde ich C# – sehe

+0

@sehe C# in den Tags –

+0

Korrigieren Sie mich, wenn ich falsch liege, aber ist kein DTO und POCO auch fast? – doogle

Antwort

6

Blick auf Bibliotheken, die dies für Sie tun:

Mein persönlicher leichter Favorit ist implizite Konvertierung ops zu verwenden. Ich muss hinzufügen, dass ich dies nur verwende, wenn ich vorhabe, die "Leimschicht" nach einem zukünftigen Refactoring zu entfernen. Dies kann als langfristige Lösung in einer Produktionsumgebung nicht gut sein (weil die Selbstverständlichkeit es leicht macht, sie zu verpassen).

public class MyPoco 
{ 
    public static implicit operator MyPoco(MyDTO o) 
    { 
     if (o == null) return null; 
     return new MyPoco { 
      SomeAmount = Convert.ToDecimal(o.SomeAmount), 
      SomeBool = Equals("Y", o.SomeBool ), 
      Sub1  = o.Sub1, 
      Sub2  = o.Sub2, 
     }; 
    } 
    public static implicit operator MyDTO(MyPoco o) 
    { 
     if (o == null) return null; 
     return new MyDTO { 
      SomeAmount = o.SomeAmount.ToString(), 
      SomeBool = o.SomeBool  ? "Y":"N", 
      Sub1  = o.Sub1, 
      Sub2  = o.Sub2, 
     }; 
    } 
    public decimal SomeAmount { get; set; } 
    public bool SomeBool  { get; set; } 
    public MySubPoco1 Sub1  { get; set; } 
    public MySubPoco2 Sub2  { get; set; } 
}