我有以下代码:
public IEnumerable<T> PageData<T>(Expression<Func<T, bool>> predicate, int pageNumber, int pageSize, bool trace)
{
var skip = 0;
if (pageNumber > 0)
{
skip = pageNumber - 1;
}
List<T> data;
using (IDbConnection db = _dbFactory.OpenDbConnection())
{
var totalResults = db.Select<T>(predicate);
data = totalResults.Skip(pageSize * skip).Take(pageSize).ToList();
if (data.Any())
{
var firstRecord = data.FirstOrDefault();
if (firstRecord != null)
{
data.FirstOrDefault().GetType().GetProperty("TotalCount").SetValue(this, totalResults.Count(), null);
data.FirstOrDefault().GetType().GetProperty("TotalPages").SetValue(this, totalResults.Count() / pageSize, null);
data.FirstOrDefault().GetType().GetProperty("PageNow").SetValue(this, pageNumber, null);
}
}
if (trace) { TraceOut(db.GetLastSql()); }
}
return data;
}
但是,我的属性是作为基类继承到 T 中的。当 getProperty 在 base.property 内时,我将如何设置该值。
当我尝试时,我收到以下错误:
对象与目标类型不匹配
这是在线的:
data.FirstOrDefault().GetType().GetProperty("TotalCount").SetValue(this, totalResults.Count(), null);
这些属性确实存在,很好,就在基地内部。
谢谢