У меня есть действие, свойства которого выглядят примерно так (они настроены как правильные свойства зависимостей, я просто упростил это здесь):
public List<MyType> TypeList { get; set; }
public Int32 Index { get; set; }
public MyType SelectedType { get; set; }
и выполнение, которое просто делает это:
SelectedType = TypeList[Index];
TypeList и Index - это значения, которые я установил из других действий. Я не устанавливаю SelectedType на что-либо в свойствах действия, я просто позволяю ему быть установленным при выполнении.
Теперь я точно знаю, что SelectedType настроен правильно, я даже могу указать на другое действие и распечатать из него некоторые значения. Поэтому я совершенно уверен, что в этом нет ничего плохого.
Однако у меня есть операция if с условием, которое выглядит следующим образом:
((MyActivity)GetActivityByName("activity1")).SelectedType != null
, и оно оценивается как ложное (имеется в виду, что SelectedType оценивается как ноль). Я почти уверен, что приведение активности правильное (я все время так делаю), и если бы это было не так, я бы не получил исключение нулевой ссылки при попытке доступа к SelectedType? Поэтому я почти уверен, что здесь я не делаю ничего плохого, но по какой-то причине SelectedType обнуляется в этом состоянии, и нигде больше.
Это почти так же, как если бы условие оценивалось до выполнения действия, но действие наступает задолго до условия в рабочем процессе, поэтому я не понимаю, почему это так.
Может кто-нибудь пролить свет на это?