简化,我有这个简单的代码:
services.AddScoped<IFruit>(provider =>
{
var httpContext = provider.GetRequiredService<IHttpContextAccessor>().HttpContext;
if (httpContext.Request.QueryString.HasValue)
{
return new AppleService(...);
}
else return new OrangeService(...);
});
问题是AppleService&OrangeSservice在构造函数中有许多(且不同的)参数(其他 DI 参数),我认为我在这里走错了方向。
public class AppleService:IFruit
{
public AppleService (a,b,c,d,e....){}
}
public class OrangeService:IFruit
{
public OrnageService (o,i,u,y,....){}
}
另外,我不想预先实例化这两个服务只是为了决定使用哪个。
我希望实例化仅适用于我将要使用的服务。(根据请求参数)
正如您所看到的,即使他只需要一个服务,他也会注入并实例化这两个服务。
(在我的场景中,我需要范围实例化)
问题:
如何仅实例化每个请求参数所需的服务?
拉风的咖菲猫
相关分类