Replies: 2 comments 1 reply
-
才发现 ISelect 有 ToUpdate()/ToDelete(),暂用它们直接转了,可以达到继承类只需重写ApplyFilter一个方法的目的: protected abstract ISelect<TEntity> ApplyFilter(ISelect<TEntity> iSel, TFilter filter);
protected virtual IUpdate<TEntity> GetFilteredIUpdate(TFilter filter)
=> ApplyFilter(fsql.Select<TEntity>(), filter).ToUpdate();
protected virtual IDelete<TEntity> GetFilteredIDelete(TFilter filter)
=> ApplyFilter(fsql.Select<TEntity>(), filter).ToDelete(); |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
场景为:有个类内部需要分别对 ISelect/IUpdate/IDelete 设置同一类型的过滤条件,例如过滤条件类设计为:
当前需要分别为 ISelect/IUpdate/IDelete 各写一个方法:
若 Where/WhereIf 等等放到一个公共父接口例如
ICrud
里,则只需一个方法:为达到以上目的,ISelect/IUpdate/IDelete 可按如下改造,应该不会影响现有应用:
新增父接口,并把 Where/WhereIf 等等放入其中。ISelect/IUpdate/IDelete 本身是泛型接口,需要新增两个父接口:
然后让 ISelect/IUpdate/IDelete 都继承一下新增的接口,并把其中原有的 Where/WhereIf 删掉:
如此就可按上述只定义一个
ApplyFilters
方法了。建议的起因是一个通用 CRUD 服务
CRUDServiceBase
泛型抽象基类,其定义为:https://quickadmin.net/reference/html/T_QuickAdmin_Service_CRUDServiceBase_4.htm
设计有应用过滤条件的方法并需要在继承类进行重写,如果有了
ICrud
,CRUDServiceBase
就只需设计一个应用过滤条件的方法而不是现在的三个。Beta Was this translation helpful? Give feedback.
All reactions