Я думаю, с тем, что я собираюсь написать, я должен сначала уточнить, это не то, чего я хотел бы достичь. Это то, что случилось со мной, и я пытаюсь понять, как это возможно, чтобы исправить это. Итак, поехали...
Я использую С#, .Net 4.0. Код большой, слишком большой, чтобы вставить все это здесь, но я пытаюсь объяснить, что происходит, в надежде, что найдется кто-нибудь знающий, у кого будут какие-то мысли.
В моем стеке вызовов у меня есть ряд универсальных методов, и я заметил, что, хотя значение должно быть просто передано от одного к другому, оно меняется. Хорошо, это было мое первое впечатление. Позже мне удалось выделить один проблематичный метод, в котором при остановке я вижу два разных значения одного и того же свойства объекта.
public class Sample : BaseClass, ISomeInterface
{
[XmlIgnore]
public new Guid Id { get; set; }
}
Что может быть важно, что и BaseClass, и ISomeINterface определяют
public Guid Id
так что теперь, когда я останавливаюсь в этом универсальном методе и смотрю переменную data типа Sample, я могу развернуть ее свойства и увидеть первое значение Id . Но когда я смотрю data.Id, он показывает другое значение. Посмотрите сами.
(Здесь была картинка, которую я не могу опубликовать из-за ничтожной репутации. Извините)
Редактировать: я отправил его сюда http://picturepush.com/public/7307446
Кто-нибудь знает, в чем разница в том, как получаются эти значения в окне Watch? В чем разница? Я пробовал много разных подходов, приведение, использование отражения, но всегда получаю то же значение, что и при просмотре data.Id, и по иронии судьбы правильное значение, которое я ожидаю, является другим, неуловимым.
О, и нет, это не домашнее задание ;)