如何解决使用嵌入式 DI 机制注入内部类的正确方法是什么
找不到从单独的库中注入内部类的正确方法。为 Autofac 找到了类似问题的 solution,但在嵌入式依赖注入机制中找不到相同的问题。
我的项目结构如下:
市场 (asp.net) 项目:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMarketplaceDbContext();
}
}
商业(图书馆):
public static class DI
{
public static IServiceCollection AddMarketplaceDbContext(
this IServiceCollection services)
{
services.AddSingleton<DeviceHandler>(x =>
{
var context = x.GetRequiredService<MarketplaceContext>();
return new DeviceHandler(context);
});
return services.AddDbContext<MarketplaceContext>(options =>
options.UseNpgsql("connection_string"));
}
}
public class DeviceHandler
{
private readonly MarketplaceContext _context;
internal DeviceHandler(MarketplaceContext marketplaceContext)
{
_context = marketplaceContext;
}
}
internal class MarketplaceContext : DbContext
{
public MarketplaceContext(DbContextOptions<MarketplaceContext> options)
: base(options)
{
}
}
这有效,但如果我尝试像这样注入 DeviceHandler
services.AddSingleton<MarketplaceHandler>();
然后我得到
System.AggregateException: '某些服务无法构建(验证服务描述符时出错'ServiceType: Business.Core.DeviceHandler Lifetime: Singleton ImplementationType: Business.Core.DeviceHandler': A合适的构造函数用于类型'Business .Core.DeviceHandler' 无法定位。请确保类型是具体的,并且为公共构造函数的所有参数注册了服务。)'
2 个内部异常中的 1 个:
InvalidOperationException:验证服务描述符时出错:“ServiceType:Business.Core.DeviceHandler Lifetime:Singleton ImplementationType:Business.Core.DeviceHandler”:找不到适合类型“Business.Core.DeviceHandler”的构造函数。确保类型是具体的,并且为公共构造函数的所有参数注册了服务。
2 个内部异常中的 2 个:
InvalidOperationException:找不到适合类型“Business.Core.DeviceHandler”的构造函数。确保类型是具体的,并且为公共构造函数的所有参数注册了服务。
希望任何人都知道更好(或正确)的解决方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。