У меня есть интерфейс со свойством и класс, который реализует этот интерфейс. Я передаю экземпляр класса в интерфейс, затем попытаюсь прочитать свойство и не получить значение. Может ли кто-нибудь понять, почему?Что может привести к поломке свойства интерфейса?
Интерфейс:
public interface IFoo
{
int ObjectId { get; }
}
Класс:
public class Bar : IFoo
{
public int ObjectId { get; set; }
}
Использование:
...
Bar myBar = new Bar() { ObjectId = 5 };
IFoo myFoo = myBar as IFoo;
int myId = myFoo.ObjectId; //Value of myFoo.ObjectId is 5 in Watch, but myId remains at 0 after statement
...
Это упрощенно, но по сути то, что я делаю. Почему я могу увидеть значение myFoo.ObjectId в окне просмотра, но присваивание myId не выполняется (значение равно 0 до и после назначения)?
Там нет ничего плохого с кодом - единственное объяснение состоит в том, что либо вы осматривая его на точку останова на последней строке (которая является до этого до того, как она выполняется), или вы проверяете неверную переменную. Поместите 'Console.WriteLine (myId)' в конец, и вы увидите, что значение действительно установлено. – Rob