私は監査ログ用のインターフェースを持っています:
public interface IAuditDbContext<T1, T2>
{
T1 AuditLog { get; set; }
T2 ChangeTracker { get; }
}
現在、メインの AppDbContext インターフェイスで、これを次のように継承しています。
public interface IAppDBContext<T1, T2> : IAuditDbContext<T1,T2>
{
Task<int> SaveChangesAsync(CancellationToken cancellationToken);
}
メインの AppDbContext クラスでは、次のように継承しています。
public class AppDBContext : DbContext, IAppDBContext<DbSet<Audit>, ChangeTracker>
{
....
}
問題は、依存性注入の時点で、次のように注入しようとしていることです。
services.AddScoped(
typeof(IAppDBContext<,>),
typeof(IAuditDbContext<,>).MakeGenericType(typeof(AppDBContext)));
私は他の方法も試しましたが、成功することができませんでした - 私が得ているいくつかのエラーメッセージは次のとおりです:
エラー メッセージ:
- Message=指定されたジェネリック引数の数が、ジェネリック型定義のアリティと等しくありません。
- 実装タイプ 'Common.Application.Interfaces をインスタンス化できません。IAuditDbContext
2[T1,T2]' for service type 'Common.Application.Interfaces.IAppDBContext
2[T1,T2]'
それを正しく実装するための助けを求めています。