Доброго времени суток.
В своих проектах использую конструкцию для доступа к MainWindow из других классов. И вот задался вопросом насколько это правильно и безопасно использовать. Если не безопасно, то если способы обезопасить?
Видел много аналогов этому, ни все они не такие простые и удобные.
public static MainWindow Instance;
public MainWindow()
{
InitializeComponent();
Instance = this;
}
MainWindow.Instance.List.ItemsSource = null;
Поскольку главное окно в приложении по определению одно, использовать синглтон для него нормально. Но делать это нужно правильно. Не используйте публичное поле (его можно случайно изменить в любом месте программы), вместо этого заверните его в get-only свойство:
static MainWindow _Instance = null;
public static MainWindow Instance
{
get { return this._Instance;}
}
Также необходимо сделать защиту от повторного создания объекта (если код написан в предположении, что существует только один объект, случайное повторное его создание может все сломать). Сделать конструктор закрытым скорее всего не получится, так как отвалится дизайнер форм, но можно проверять, что окно уже создано, и бросать исключение.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Метод show вызывается 2 разаОдин раз когда $message равен NULL и второй раз после того как через setMessage передан объект класса HelloMessage