0
有一個通用的存儲庫,工作正常。該庫有2個構造函數:如何檢查項目匹配謂詞
private IDbSet<T> mDbSet;
private Expression<Func<T, bool>> mPredicate;
...
public Repository()
{
mDbSet = mDb.Set<T>();
mPredicate = null;
}
public Repository(Expression<Func<T, bool>> predicate)
{
mDbSet = mDb.Set<T>();
mPredicate = predicate;
}
第二個爲存儲庫中的項目提供「標準」過濾器。該過濾器適用於輸出以及輸入。所以Add函數需要檢查元素是否與謂詞匹配。怎麼做。以下不編譯:
public virtual void Add(ref T item)
{
if (mPredicate != null)
{
List<T> chkList = new List<T>() { item };
if (chkList.FirstOrDefault(mPredicate) == null)
{
throw new AppExcpetion("Add non-matching element.");
}
}
mDbSet.Add(item);
}
FirstOrDefault適用於非通用列表。但也許我不需要列表來檢查項目是否與謂詞匹配。預先感謝任何幫助!
'如果(mPredicate! = null &&!mPredicate(item)){拋出新的AppException ...}'? –