У меня проблема со следующим кодом:
int errorCount = 0;
foreach (var cinf in client.GetType().GetProperties())
{
var vinf = viewModel.GetType().GetProperty(cinf.Name);
if (vinf != null)
{
if (cinf.GetValue(client, null) != vinf.GetValue(viewModel, null))
{
errorCount++;
}
}
}
Это автоматизированный тест, чтобы увидеть, работает ли отображение объекта модели из DTO. Если я использую более громоздкий способ написания этого для каждого свойства:
Assert.AreEqual(viewModel.ClientCompanyID, client.ClientCompanyID);
Это отлично работает.
Проблема в том, что код отражения неверно оценивает выражение «if val1! = Val2» (или так кажется). Если я перебираю этот код, оценка в основном говорит: «1 не равно 1» и неправильно добавляет ошибку. Кроме того, если я проверю это с помощью этого кода, я получу тот же на первый взгляд неверный результат:
var clientEx = client.GetType().GetProperty("ClientCompanyID");
var viewModelEx = viewModel.GetType().GetProperty("ClientCompanyID");
var clientVal = clientEx.GetValue(client, null);
var viewModelVal = viewModelEx.GetValue(viewModel, null);
bool test = (clientVal == viewModelVal);
bool возвращает false, даже когда, шагая по коду, clientVal = 1 и viewModelVal = 1. См. Прикрепленное изображение.
Любая помощь с этим будет принята с благодарностью!
Спасибо, ребята.
Тим.
РЕДАКТИРОВАТЬ: Могли бы дать вам все ответы. Рад, что это было просто в конце. Большое спасибо за вашу помощь. Приветствия.