gpt4 book ai didi

c# - 如何使用 Simple Injector 注册嵌套泛型类型?

转载 作者:行者123 更新时间:2023-11-30 23:07:34 25 4
gpt4 key购买 nike

使用 Mediatr,我有以下请求处理程序:

public class GetEntityByIdRequest<TEntity> : IRequest<TEntity> where TEntity : Entity
{
public int Id { get; set; }

internal class Handler : IRequestHandler<GetEntityByIdRequest<TEntity>, TEntity>
{
public TEntity Handle(GetEntityByIdRequest<TEntity> message)
{
return new Session.Query<TEntity>().FirstOrDefault(x => x.Id == message.Id);
}
}
}

我在 IoC 中注册这个通用请求处理程序时遇到问题。我试过像这样注册:

container.Register(typeof(IRequestHandler<,>), typeof(GetEntityByIdRequest<>));
container.Register(typeof(IRequestHandler<,>), typeof(GetEntityByIdRequest<Entity>));

这给了我错误:

System.ArgumentException : The supplied type GetEntityByIdRequest<TEntity> does not implement IRequestHandler<TRequest, TResponse>. Parameter name: serviceType

我也看过this这与我遇到的问题相同,但此人使用的是 StructureMap 而不是 Simple Injector。

谁能帮我注册我的通用请求处理程序。

最佳答案

您正在将查询 类型注册为处理程序。这显然行不通。您将不得不注册处理程序:

container.Register(typeof(IRequestHandler<,>), typeof(GetEntityByIdRequest<>.Handler));

关于c# - 如何使用 Simple Injector 注册嵌套泛型类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47142454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com