我試圖定義一個通用類如何定義通用約束,以便我可以使用? coalesing操作
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類型參數設置約束,以便編譯器知道它是引用類型或可爲空類型。
如何讓編譯器高興?
啊,只是意識到我需要'TDatabase的地方:類,IDatabase' – 2012-04-04 15:36:05
難道你只是想:回報分貝? DatabaseFactory.Get();這裏? – dougajmcdonald 2012-04-04 15:37:09
@dougajmcdonald不一定,它是一種懶惰的加載模式。 – NSGaga 2012-04-04 18:33:11