У меня есть приложение WPF, состоящее из MainWindow
, а также множество объектов Page
, к которым можно получить доступ через MainWindow
. Я в настоящее время User
класса будучи инстанцирован в ViewModel
в MainWindow
, который определяет разрешения свойства, которые связаны с различными свойствами, в соответствующих View
:Можно ли создать экземпляр нестатического класса для всего приложения WPF?
public NavigationViewModel()
{
_currentUser = new User(_currentServerConnection, Environment.UserName);
Теперь я хотел бы получить доступ к этому же User
экземпляра в каждом из Page
объект ViewModels
. Каков наиболее подходящий способ сделать это с точки зрения дизайна? Я прочитал несколько потоков в StackOverflow и пришел к выводу, что я должен либо сделать этот класс static
(что здесь не имеет смысла, этот класс имеет state
) или создает экземпляр в каждом ViewModel
. Есть ли какие-то другие варианты, которых я мог бы пропустить? О, я тоже читал о классах Singleton, и это явно не рекомендуется. Я чувствую, что мне не хватает фундаментальной концепции здесь.
Синглтона не рекомендуется. Не рекомендуется использовать синглтоны, используемые в неправильном месте или в неправильном порядке. Весь ваш вопрос кричит как «правильный» и «правильный» пример того, когда полезно использовать одноэлемент. – Rhyous
Единственная разница между статикой и синглом заключается в том, что одноэлемент не создается до первого использования. работайте отлично в многопоточных приложениях с блокировкой http://msdn.microsoft.com/en-us/library/ff650316.aspx – Rhyous
Вы также можете смешивать шаблон IOC и Singleton. Вы создаете интерфейс. Вы создаете Singleton, который реализует этот интерфейс. Затем ваш контроллер IOC/фабрика каждый раз использует ваш синглтон. – Rhyous