Этот вид логики c очень индивидуален, и я не думаю, что Automapper сможет справиться с этим просто потому, что это не отображение 1: 1, а 1: 3 (или даже больше, если вы хотите иметь больше свойств на вашем Person
класс). Поэтому я предлагаю вам сделать это с помощью Reflection, вместо того, чтобы тратить время на Automapper. Не поймите меня неправильно - Automapper - лучшее, что есть для отображения 1: 1, но я никогда не видел, чтобы он использовался для такого сценария. Просто go пользовательские логи c:
public partial class Person
{
public int Person_Id { get; set; }
public string Nickname { get; set; }
public string City { get; set; }
}
public partial class Resource
{
public string Property { get; set; }
public string V1 { get; set; }
public string V2 { get; set; }
}
class Program
{
static void Main(string[] args)
{
var item = new Person()
{
Person_Id = 1,
City = "New York",
Nickname = "John"
};
PropertyInfo[] props = typeof(Person).GetProperties(BindingFlags.Public | BindingFlags.Instance);
List<Resource> result = new List<Resource>();
foreach (var prop in props)
{
result.Add(new Resource()
{
Property = prop.Name,
V1 = prop.GetValue(item).ToString(),
V2 = null
});
}
// result is now [ { Property: Person_Id, V1: "1", V2: null }, { Property: Nickname, V1: "John", V2: null }, { Property: City, V1: "New York", V2: null } ]
}
}
Конечно, вы можете ускорить процесс, не просматривая свойства, а просто жестко кодируя имена свойств, используя nameof(Person.Person_Id)
и т. Д.