Как надежно обнаружить, если инициализатор объекта не установил свойство?C#

Место общения программистов C#
Ответить
Anonymous
 Как надежно обнаружить, если инициализатор объекта не установил свойство?

Сообщение Anonymous »

Мой пользовательский элемент управления - это кадр , который был изменен для поддержки связываемого свойства FrameID , которое пользователь библиотеки будет определять как enum в клиентском XAML, который они разрабатывают. Как показано ниже, свойство FrameID либо "IS", либо "не" установлен.

Код: Выделить всё

   ...



...
< /code>
Основная задача достоверно обнаруживает, не произошла ли назначение свойств  < /em>. < /p>

 контекст: это часть структуры, которая поддерживает «Нет или один» неназванный кадр в области выполнения. [b] Мой вопрос: [/b] - это конструктор и инициализатор объекта, гарантированно выполняемые последовательно без перерыва? Потому что это  выглядит таким образом , и я хочу избежать «магической задержки», которая может  достаточное время для завершения операции.
То, что я делал, публикую в конце очереди пользовательского интерфейса. Он ведет себя точно так же, как я ожидаю, что говорит о том, что поток не отказывается между выполнением конструктора и инициатором объекта, применяющим значения свойства. Что мне не ясно, так это то, вводит ли инициализация на основе связывания неопределенность, или есть другие случаи, когда мое предположение может потерпеть неудачу. < /P>
class FrameWithId : Frame
{
public FrameWithId()
{
Debug.WriteLine($"FrameId in CTor = {FrameId}");
Dispatcher.Dispatch(() => CheckForDefaultId());
}

private void CheckForDefaultId()
{
Debug.WriteLine($"FrameId after initialization = {FrameId}");
if(Equals(FrameId, Reserved.DefaultId))
{
// The XAML has not changed the FrameId
}
}
}
Я ищу конкретные сценарии и тестируемые результаты. ?


Подробнее здесь: https://stackoverflow.com/questions/794 ... a-property
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»