В моем заявлении я просматриваю URL-адрес, предоставляя параметры через строку запроса. На основе URI запускается соответствующее действие контроллера, а предоставленные параметры автоматически сопоставляются с моей моделью.
URL: http://{host}:{port}/{website}/{controller}/{action}?{querystring}
URI: /{controller}/{Action}?{QueryString}
Мой URI: Сотрудник/Добавить?EmployeeCode=Code3&EmployeeId=103
Модель сотрудника
public class EmployeeModel
{
public Employee()
{
}
public string EmployeeId { get; set; }
public string EmployeeCode { get; set; }
//Some more properties here
}
Контроллер сотрудников
[HttpGet]
[Route("Add")]
public IActionResult Add([FromUri] EmployeeModel model)
{
//Some code here
}
Хотя все это работает потрясающе, когда я просматриваю, ниже показан порядок, в котором достигаются точки останова,
- Добавить метод EmployeeController
- Конструктор по умолчанию для EmployeeModel
- установить метод свойства EmployeeId модели EmployeeModel
- установить метод свойства EmployeeCode модели EmployeeModel
Я подозреваю, что порядок, в котором инициализируются свойства, основан на порядке их объявления в классе.
Но для создания экземпляра и инициализации свойств фреймворк должен использовать отражение. И согласно документации MSDN для Type.GetProperties заказ не гарантируется.
Метод GetProperties не возвращает свойства в определенном порядке, например в алфавитном порядке или в порядке объявления. Ваш код не должен зависеть от порядка, в котором возвращаются свойства, потому что этот порядок может меняться.
Я в основном хочу, чтобы инициализация происходила в определенном порядке, возможно ли это?