ジェネリッククラスを定義しようとしています
public abstract class RepositoryBase<TDatabase, TKey, T> : IRepository<TKey, T>
where T : class
where TDatabase : IDatabase
{
private TDatabase db;
private readonly IDbSet<T> dbset;
protected IDatabaseFactory<TDatabase> DatabaseFactory { get; private set; }
protected TDatabase Database
{
get
{
return db ?? (db = DatabaseFactory.Get());
}
}
...
}
行return db ?? (db = DatabaseFactory.Get());
で、コンパイラは「'??'の左オペランド」と文句を言っています。演算子は参照型またはnull許容型である必要があります」
エラーは理解しましたが、TDatabase型パラメーターに制約を設定して、コンパイラーがそれが参照型またはnull許容型であることを認識できるようにする方法がわかりません。
コンパイラを幸せにするにはどうすればよいですか?