У меня есть свойство в составном элементе управления, которое проверяет, изменилось ли значение до фактической установки связанного частного поля и выполнения нескольких других действий.
Однако, похоже, что оно никогда не оцениваетоператор.
Вот код свойства:
public T SearchCriteria
{
get
{
return mySearchCriteria;
}
set
{
if (value != mySearchCriteria)
{
mySearchCriteria = value;
EnsureChildControls();
SearchGridParser parser = SearchGridParserFactory.GetParser(this.Type);
parser.SetSearchPanelControls<T>(this.mySearchCriteria, ref mySearchParametersPanel);
GridView.PageIndex = 0;
}
}
}
Я прошел этот код, и каждый раз, когда он получает значение «=! = mySearchCriteria», он оценивается как ложное и пропускаеткод внутри оператора if.Фактически, он делает это, даже когда я изменяю его на «value == mySearchCriteria» .. если просто полностью пропускает его, независимо от того, как он оценивает!
Что за хей?
попытался изменить порядок аргументов в проверке, а также с помощью object.Equals (), но ни одно из этих изменений не имело никакого значения.
Я переопределил Equals,! =, == и GetHashCode.
В коде есть другие места, где он использует "==" и "! =" Для этих типов объектов без проблем, поэтому я знаю, что мое переопределение работает правильно.
Проблема в том,это никогда не затрагивает переопределенные методы.Я ставлю разрывы на "==", "! =", "Equals" и "GetHashCode", и ни один из них не вызывается при оценке оператора "value! = MySearchCriteria".
Это похоже на этополностью пропускает оценку.