Является ли Messenger of CommunityToolkit одноэлементным?C#

Место общения программистов C#
Ответить
Anonymous
 Является ли Messenger of CommunityToolkit одноэлементным?

Сообщение Anonymous »

Я хотел бы использовать Messenger of the CommunityToolkit для связи между некоторыми моделями представлений.
Если я попытаюсь определить внедрение зависимостей таким образом, я получу исключение: р>

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

services.AddTransient();
потому что реализации этого интерфейса нет.
Однако я могу зарегистрировать приемники в конструкторе модели представления следующим образом:

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

WeakReferenceMessenger.Default.Register(this);
Похоже, что это глобальный ресурс.
Поэтому я предполагаю, что когда модель представления отправляет сообщение, все получатели будут получить сообщение. Но что произойдет, если сообщение должен получить только один получатель? Сначала мне нужно проверить, является ли отправитель ожидаемым отправителем.
Например, у меня есть два изолированных модуля:

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

public class MainViewModel1
{
ViewModelA _viewModelA;
ViewModelB _viewModelB;

public MainViewModel1(ViewModelA paramViewModelA, ViewmodelB paramViewModelB)
{
_viewModelA = paramViewModelA;
_viewModelB = paramViewModelB;

WeakReferenceMessenger.Default.Register(this);
}
}

public class MainViewModel2
{
ViewModelA _viewModelA;
ViewModelB _viewModelC;

public MainViewModel2(ViewModelA paramViewModelA, ViewmodelC paramViewModelC)
{
_viewModelA = paramViewModelA;
_viewModelC = paramViewModelC;

WeakReferenceMessenger.Default.Register(this);
}
}
Когда ViewModelA из MainViewModel1 отправляет сообщение, я хочу, чтобы оно было получено только в MainViewModel1, а не в MainViewModel2. И когда ViewModelA из MainViewModel2 отправляет сообщение, я хочу, чтобы это сообщение получил только mainViewModel2.
Если у меня есть общий мессенджер для всего приложения, как бы я мог справиться с этим делом?
Спасибо.

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

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

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

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

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

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