我想知道这样的事情在.NET6中是否可能发生.
给出一个具有另外3个数据库的应用程序,每个数据库都使用自己的DbContext,在一个实体上创建一个泛型DbContext,如下所示:
public class DbRepository<TRepository, TEntity> : IDbRepository<TRepository, TEntity> where TRepository : IContext
services.AddScoped(typeof(IDbRepository<,>), typeof(DbRepository<,>));
通过实施:
public class FirstDbContext : IFirstDbContext
public class SecondDbContext : ISecondDbContext
现在,也是同一个TRepository的BaseService:
public class BaseService<TRepository> where TRepository : IContext
我可以根据BaseService中的TRepository限制传递给服务的内容吗?
因此:
public class UserService : BaseService<IFirstDbContext>
{
public UserService(
IDbRepository<IFirstDbContext, User> userDbRepository, /* allowed */
IDbRepository<ISecondDbContext, Invoice> invoiceDbRepository, /* not allowed */
) { }
}
如果UserService定义为BaseService<IFirstDbContext>
,则仅允许注入类型IDbRepository<IFirstDbContext, TEntity>
.