提问人:Gerald St 提问时间:3/24/2021 最后编辑:John SaundersGerald St 更新时间:3/24/2021 访问量:147
c# 泛型属性筛选器
c# Generics property filter
问:
我是泛型的新手,并试图找出一个问题。
我创建了一个抽象类,其中包含用于数据库 CRUD 方法的方法,用于特定类型的存储库类,例如博客、帖子等。我希望在搜索方法中根据接口属性“ClassType”上的值创建一个过滤器,该属性在传递给抽象类的每个类中实现。
抽象类定义如下:
public abstract class RepositoryCrudBase<T> : IRepositoryCrudBase<T> where T : class
搜索方法定义为:
public async Task<IEnumerable<T>> GetAllAsync(Expression<Func<T, bool>> where)
在 GetAllAsync 方法中,我希望能够使用每个类的基类型的“ClassType”执行 LINQ“where”筛选器,例如
.Where(t => t.ClassType == typeof(T).Name)
但不是查询中的可用属性ClassType
我发现我可以将方法签名修改为以下内容,并且查询按预期工作:
public async Task<IQueryable<T>> GetAllAsync<T>(Expression<Func<T, bool>> where) where T : IModelBase
但这意味着我将基类型传递到抽象类本身,然后再次传递到方法中,这并不理想。
有没有办法使用传递给抽象类的“ClassType”属性进行查询,而不是将“where T : IModelBase”部分添加到方法中?
答: 暂无答案
评论
where T : IModelBase
IModelBase
T
IModelBase
IModelBase
IModelBase