Как зарегистрировать MediatR в приложении WPFC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как зарегистрировать MediatR в приложении WPF

Сообщение Anonymous »

Я экспериментирую с DDD в приложении MVVM.
Это базовая клиентская система.
Когда я добавляю адрес, который хочу проверить, он не существует в базу данных.
Это можно сделать с помощью события домена в сущности «Клиент».

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

    public async Task AddAdress(AddAddressCommand addAddressCommand)
{
await DomainEvents.Raise(new AddingAddress(addAddressCommand));

return Result.Success;
}
Команда AddAddressCommand:

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

    public class AddAddressCommand
{
public Address Address { get; set; }
public AddAddressCommand(Address address)
{
Address = address;
}
}
со следующим классом адреса:

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

    public record Address(AddressType AddressType,
string StreetName,
string HouseNumber,
string HousenumberAddition,
string PostalCode,
string Residence
)
{
public AddressType AddressType { get; set; } = AddressType;
public string StreetName { get; set; } = StreetName;
public string HouseNumber { get; set; } = HouseNumber;
public string HouseNumberAddition { get; set; } = HousenumberAddition;
public string PostalCode { get; set; } = PostalCode;
public string Residence { get; set; } = Residence;
}
Я использую MediatR для обработки событий такого типа с помощью этого класса

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

    public static class DomainEvents
{
public static Func Mediator { get; set; }
public static async Task Raise(T args) where T : INotification
{
var mediator = Mediator.Invoke();
await mediator.Publish(args);
}
}
Когда я прихожу сюда, экземпляр Mediator не найден!
Я регистрирую экземпляр Mediator в своем app.xaml.cs следующим образом:

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

ServiceLocator.Default.RegisterType();
ServiceLocator является частью платформы Catel MVVM.
Я нашел множество примеров регистрации MediatR, но все они основаны на веб-API. .
Я не могу понять, как правильно зарегистрировать MediatR.
App.xaml.cs и domainevents находятся в отдельных сборках. >
Я пытался найти сервис типа

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

    public static class DomainEvents
{
public static Func Mediator { get; set; }
public static async Task Raise(T args) where T : INotification
{
var mediator = ServiceLocator.Default.ResolveType();
mediator = Mediator.Invoke();
await mediator.Publish(args);
}
}
Но это все равно приводит к ошибке IMediator не найден.
Полагаю, мне нужно что-то вроде

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

ServiceLocator.Default.RegisterType(AddMediatR(cfg => {                cfg.RegisterServicesFromAssembly(typeof(Program).Assembly)))}
но я не могу заставить это работать.

Подробнее здесь: https://stackoverflow.com/questions/792 ... pplication
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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