我正在尝试定义一个泛型类
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());,编译器抱怨“'??'的左操作数 运算符应该是引用或可为空的类型”
我理解错误,但不知道如何对 TDatabase 类型参数施加约束,以便编译器知道它是引用或可为空的类型。
如何让编译器满意?