Мой вопрос: какой лучший способ я могу сопоставить один объект с другим наиболее удобным образом. Я не могу изменить способ, с помощью которого объект Dto, который мы получаем, является более нормализованным, поэтому мне нужно создать способ сопоставить это с нашей реализацией их объекта.
Вот пример кода, чтобы показать, что мне нужно:
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; }
}
Я думаю, что было бы здорово, если бы у меня был какой-то класс сопоставления, который бы взял в объектах model propertyInfo, тип, который я хочу преобразовать, и "itemname", который я хочу вытащить. Есть ли у кого-нибудь какие-либо предложения сделать это чище?
Спасибо!