私は次のクラス定義を持っています:
public abstract class ControllerBase<T, V> : Controller where T : EntityBase<T> where V : GenericRepository<T>
その後、クラスの後半で次のコードを使用します。
private V _repo;
...
_repo = (V)Activator.CreateInstance(typeof(V), _dbC, _c);
これは問題なくコンパイルされます。次に、次の定義を持つクラスがあります。
public class SecurityRoleController : ControllerBase<SecurityRole, GenericRepository<SecurityRole>>
それもうまくコンパイルされます。ただし、ブラウザで/ SecurityRoleを押しようとすると、例外が発生しConstructor on type GenericRepository'1 not found
ます。(これは実際には例外のバックティックですが、SOフォーマットが壊れることに注意してください。)これはGenericRepository<T>
、クラスのインスタンスを直接作成しようとすると正常に機能するパブリックコンストラクターがあるにもかかわらずです。
クラスの汎用インスタンスを適切に構築する方法を知っている人はいますか?
TIA、
ベンジー
編集:
のコンストラクタGenericRepository
:
public GenericRepository(DbContext dbContext, Context c, string[] includes = null)
{
_dbContext = dbContext;
_c = c;
if (includes != null)
{
_includes = includes;
}
return;
}
そして、andの型は_dbC
and_c
でDbContext
あり、コンストラクターでrequiresが必要とContext
する型です。そうです、私はこれらをから取得しました。何かご意見は?GenericRepository
.GetType().FullName