我想測驗一個由于AsyncRequestHandler介面而受到保護的處理程式。這MediatR是我的處理程式:
public sealed class AddUserDeviceCommandHandler : AsyncRequestHandler<AddUserDeviceCommand>
{
private readonly ICurrentUserService _userService;
private readonly IRepository<UserDevice> _repository;
public AddUserDeviceCommandHandler(ICurrentUserService userService, IRepositoryAccessor repositoryAccessor)
{
_userService = userService;
_repository = repositoryAccessor.GetRepository<UserDevice>(_userService.CustomerIsin,
reThrowException: true, type: DatabaseType.Raven);
}
protected override async Task Handle(AddUserDeviceCommand request, CancellationToken cancellationToken)
{
//do do do some code
await _repository.AddOrUpdateAsync(model);
}
}
如您所見, Handle 方法受到保護。所以在我的測驗中,我無法訪問 handle 方法:
AddUserDeviceCommand command = new AddUserDeviceCommand(data.AppBuildNo,data.Width,data.Height,data.PlatformInfo,data.DevicePlatform);
AddUserDeviceCommandHandler handler = new AddUserDeviceCommandHandler(userservice.Object, repoacc.Object);
handler.?????
感謝任何幫助
uj5u.com熱心網友回復:
將handler變數宣告為 type IRequestHandler<AddUserDeviceCommand>。
AsyncRequestHandler<TRequest>implements IRequestHandler<TRequest>,您可以通過它訪問其Handle方法。
AddUserDeviceCommand command = new AddUserDeviceCommand(
?data.AppBuildNo, data.Width, data.Height, data.PlatformInfo, data.DevicePlatform
);
IRequestHandler<AddUserDeviceCommand> handler = new AddUserDeviceCommandHandler(
userservice.Object, repoacc.Object
);
await handler.Handle(command, CancellationToken.None);
uj5u.com熱心網友回復:
反射 ...
MethodInfo method = handler
.GetType()
.GetMethod("Handle", BindingFlags.Instance | BindingFlags.NonPublic);
await (Task)method.Invoke(
handler,
new object[] { command, CancellationToken.None });
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/409253.html
標籤:
上一篇:EFCore-未知關系定義外鍵
