私はDbContextScopeを使用しています。私は、このジェネリックインターフェイスを実装しようとしています:汎用ファクトリインターフェイスはどのように実装しますか?
namespace EntityFramework.DbContextScope.Interfaces {
public interface IDbContextFactory {
TDbContext CreateDbContext<TDbContext>() where TDbContext : class, IDbContext;
}
}
目標は次の関数に私の実装を提供することです:
namespace EntityFramework.DbContextScope {
public class DbContextScope : IDbContextScope, IDisposable {
public DbContextScope(IDbContextFactory dbContextFactory);
}
}
私はこのインタフェースを実装する方法を見つけ出すように見えることはできませんし、それをDbContextScopeに適切に提供します。私は一般的な実装しようとした:
public class MyDbContextContextFactoryGeneric : IDbContextFactory {
TDbContext IDbContextFactory.CreateDbContext<TDbContext>() {
Type type = typeof(TDbContext);
if (type == typeof(MyDbContext)) {
return new MyDbContext();
}
throw new NotImplementedException();
}
}
をしかし、私は取得エラーは、次のとおりです。「暗黙のうちに 『TDbContext』にタイプ 『MyDBContext』を変換できません」。
私は明示的に実装しようとした:
public class MyDbContextContextFactory : IDbContextFactory<MyDBContext> {
public MyDBContext Create() {
return new MyDBContext();
}
}
をしかし、私はこのようDbContextScopeに渡ししようとすると:
public class Test {
public void PerformTest() {
IDbContextFactory dbContextFactory = new MyDbContextContextFactory();
using (DbContextScope scope = new DbContextScope(dbContextFactory)) {
// Do stuff
}
}
}
私が使用して行の前の行にエラーが表示されます。 "暗黙的に 'MyDbContextContextFactory'を 'EntityFramework.DbContextScope.Interfaces.IDbContextFactory'に変換することはできません。明示的な変換が存在します(キャストがありませんか?) "
どうしたの?