如何解决将接口实现传递给方法并调用 AddTransient
如何将类/类型传递给配置 IServiceCollection 并添加瞬态服务的方法?我有一个通用的方法,但如何传递接口的实现?
TDBContextAccessor 将始终是一个接口。所以我想传递接口和它的实现。
代码:
public class CustomDB<TDBContext,TDBContextAccessor> : CustomDB<TDBContext>,ICustomDB<TDBContext,TDBContextAccessor> where TDBContext : DbContext where TDBContextAccessor : class
{
private readonly TDBContextAccessor _accessor;
public CustomDB(string connectionString,TDBContextAccessor accessor) : base(connectionString)
{
_accessor = accessor;
}
public IServiceCollection ConfigureDBContext(IServiceCollection services,TDBContextAccessor accessor)
{
return services
.AddEntityFrameworkSqlServer()
.AddDbContext<TDBContext>(opt => opt.UseSqlServer(this.ConnectionString))
.AddTransient<TDBContextAccessor>();
}
}
我试过了
.AddTransient<TDBContextAccessor,typeof(accessor)>()
但这不起作用。如何传递定义的 TDBContextAccessor 的实现?
解决方法
根据您的代码,我发现您将 typeof(accessor)
作为 TDBContextAccessor 的实现类型传递。但是 typeof(accessor)
值仍然是 TDBContextAccessor,这意味着代码应该是这个 .AddTransient<TDBContextAccessor,TDBContextAccessor >()
。
正确的方法应该是.AddTransient<TDBContextAccessor,TheClasswhichhasalreadyimpletenttheTDBContextAccessor>()
。
有关如何使用 AddTransient 的更多详细信息,您可以参考此document。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。