MediatR.Courier #1

MediatR.Courier 는 CQRS 라이브러리의 확장판으로
Event 공유를 목적으로 합니다.
WPF Prism eventaggregator 비슷한 기능을 합니다.
본 아티클에서는 Blazor를 기반으로 합니다.

MediatR
MediatR.Courier

두 Library 를 설치해야 하며 blazor에 적용시에는 Program.cs에

var assemblies = AppDomain.CurrentDomain.GetAssemblies();
builder.Services.AddMediatR(cfg => cfg.RegisterServicesFromAssembly(assemblies[0]))
            .AddCourier(assemblies);

의존성을 선언합니다.

Model 선언

public class ExampleEvent : INotification
{
    public string message { get; set; }
}
INotification 상속 받습니다.

수신부

//구독 선언
Courier.Subscribe<ExampleEvent>(EventRecv); 
//실행부
public void EventRecv(ExampleEvent exam, CancellationToken tk)    
    {
        msg = exam.message;
        StateHasChanged();
    }
    

전파부

 async Task PubMes()
    {
        ExampleEvent ev = new ExampleEvent() { message = inpumsg };
        await _mediator.Publish(ev); 
    }

image

BLAZOR PAGE에 모듈을 배치합니다.

결과

5개의 좋아요

블레이저로 하니 잘 와닿지 않아 뷰모델간 처리 하는걸 찾아 봤습니다.

그리고 이건 코드프로젝트
https://www.codeproject.com/Tips/1074227/Mediator-a-communicator-between-ViewModels

덕분에 활용 방안 배우고 갑니다.
감사합니다.

3개의 좋아요

wpf에서는 Mediator보다 prism event eventaggregator 더좋을것 같습니다 ^^
wpf에서는 Mediator 에 publish 보다 Send로 CQRS 패턴으로 제작한 아티클도
작성해보겠습니다. ^^

3개의 좋아요

Community Toolkit MVVM의 Messenger와 어떤 차이점이 있는지 알려주실 수 있을까요?

3개의 좋아요

죄송합니다. ^^ toolkit 은 해보지 않아서 prism 까지 해봤습니다.
아무래도 web 위주로 하다보니

4개의 좋아요