Я использую ValueInjecter для сопоставления классов предметной области с моими моделями представлений. Мои доменные классы сложны. Чтобы позаимствовать пример из этот вопрос:
public class Person
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public Address Address { get; set; }
}
public class Address
{
public int Id { get; set; }
public string City { get; set; }
public string State { get; set; }
public string Zip { get; set; }
}
// VIEW MODEL
public class PersonViewModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int PersonId { get; set; }
public int AddressId { get; set; }
public string City { get; set; }
public string State { get; set; }
public string Zip { get; set; }
}
Я просмотрел FlatLoopInjection, но он ожидает, что классы модели представления будут иметь префикс с типом модели вложенного домена, например:
public class PersonViewModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Id { get; set; }
public int AddressId { get; set; }
public string AddressCity { get; set; }
public string AddressState { get; set; }
public string AddressZip { get; set; }
}
OP в связанном вопросе изменил свои модели представления, чтобы они соответствовали соглашению, ожидаемому FlatLoopInjection. Я не хочу этого делать. Как я могу сопоставить свою модель предметной области с исходной моделью представления без префикса? Я подозреваю, что мне нужно переопределить FlatLoopInjection, чтобы удалить префикс, но я не уверен, где это сделать. Я просмотрел источник FlatLoopInjection, но я не уверен, нужно ли мне изменить метод Match или метод SetValue.