0

私は監査ログ用のインターフェースを持っています:

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)));

私は他の方法も試しましたが、成功することができませんでした - 私が得ているいくつかのエラーメッセージは次のとおりです:

エラー メッセージ:

  1. Message=指定されたジェネリック引数の数が、ジェネリック型定義のアリティと等しくありません。
  2. 実装タイプ 'Common.Application.Interfaces をインスタンス化できません。IAuditDbContext 2[T1,T2]' for service type 'Common.Application.Interfaces.IAppDBContext2[T1,T2]'

それを正しく実装するための助けを求めています。

4

1 に答える 1