Meine Frage ist, was ist der beste Weg, um ein Objekt auf die wartbarste Weise zu einem anderen zuzuordnen. Ich kann die Art und Weise, wie das Dto-Objekt, das wir bekommen, nicht normalisieren soll, ändern, also muss ich eine Möglichkeit schaffen, dies unserer Implementierung ihres Objekts zuzuordnen.Best Practices für die Zuordnung eines Objekts zu einem anderen
Hier ist Beispielcode zu zeigen, was ich passieren müssen:
class Program
{
static void Main(string[] args)
{
var dto = new Dto();
dto.Items = new object[] { 1.00m, true, "Three" };
dto.ItemsNames = new[] { "One", "Two", "Three" };
var model = GetModel(dto);
Console.WriteLine("One: {0}", model.One);
Console.WriteLine("Two: {0}", model.Two);
Console.WriteLine("Three: {0}", model.Three);
Console.ReadLine();
}
private static Model GetModel(Dto dto)
{
var result = new Model();
result.One = Convert.ToDecimal(dto.Items[Array.IndexOf(dto.ItemsNames, "One")]);
result.Two = Convert.ToBoolean(dto.Items[Array.IndexOf(dto.ItemsNames, "Two")]);
result.Three = dto.Items[Array.IndexOf(dto.ItemsNames, "Three")].ToString();
return result;
}
}
class Dto
{
public object[] Items { get; set; }
public string[] ItemsNames { get; set; }
}
class Model
{
public decimal One { get; set; }
public bool Two { get; set; }
public string Three { get; set; }
}
Ich denke, groß, was wäre, wenn ich irgendeine Art von Mapper-Klasse habe, die im Modell Propertyinfo-Objekte nehmen würde, der Typen I möchte ich konvertieren und den "itemname" den ich rausziehen möchte. Hat jemand irgendwelche Vorschläge, um das sauberer zu machen?
Danke!
nicht über die Zuordnung sicher, aber Sie sollten auf jeden Fall bei Generika aussehen und generischen Sammlungen mit: http://csharp-station.com/Tutorial/CSharp/Lesson20 – christiandev
Ich würde ein costructor von Modell vorzuschlagen, die eine nimmt Dto und maps/converts/checks entsprechend hardcoded, da Sie Kompilierungsfehler bekommen, wenn sich etwas in dto ändert. Reflexion und damit der Umgang mit Strings hilft Ihnen nicht, die Wartbarkeit zu erhöhen. – wonko79