Ninjectを使用してデータアクセスにNopCommerceコードを再利用しようとしています。 My Q:オブジェクトに不特定ジェネリック型を挿入するにはどうすればよいですか? NopCommerceはAutofacを使用しています。NinjectとGeneric
私のオブジェクトの説明:私はコントローラー(MyController
)がリポジトリ(IRepository<T>
)を保持しています。このリポジトリは、ninjectコマンド:kernel.Bind(typeof(IRepository<>)).To(typeof(EfRepository<>))
を使用してEfRepository<T>
として注入されます。 EfRepository
は、タイプIDbContext
を保持します。これは、一般的なDbContext
です。 EfRepository
はジェネリックタイプをIDbContext
に渡しませんでしたが、まだそれに注入されています。 Ninjectを使ってどうしたの?
コードです。
public class MyController : Controller
{
//a repository --> injected as EfRepository<> using generic injection using the command:
//kernel.Bind(typeof(IRepository<>)).To(typeof(EfRepository<>));
private readonly IRepository<Account> _repository;
}
public class EfRepository<T> : IRepository<T> where T : BaseEntity
{
private IDbContext _context; //<<== How do I inject <T> to IDbcontext?
}
public interface IDbContext
{
IDbSet<T> Set<T>() where T : BaseEntity;
}
ご回答ありがとうございます。これは前向きかつ単純な非常に厳しいものです。 –