树形结构菜单,节点显示问题
需求:
不显示没有记录的菜单节点。
子节点无记录,子节点隐藏。
父节点下的子节点,孙节点都没有记录,父节点和子、孙节点都隐藏。
解决这个问题,可以从两个方向考虑
1.调取菜单时
2.向菜单节点写入记录时
第一种如果使用了缓存,性能问题可以控制
第二种给节点加个持久化的状态标记,写入记录时,设置标记,我这里想到一个思路,采用第二种,这样在写入记录时设置了一个规则:“插入删除记录时,必须设置所属菜单的状态”
代码如下:
public interface IMenu1
{
int Add<Menu1>(Menu1 t);
}
public abstract class BaseMenu
{
public int Add<T>(T t)
{
var result = this.Insert<T>(t);
//设置父节点为显示
//T是记录对象,这里只能考虑用反射对应 T 的 父节点对象,或者每个抽象类只对应一个同类型的派生类
return result;
}
protected abstract int Insert<T>(T t);
}
public class Menu1 : BaseMenu, IMenu1
{
protected override int Insert<T>(T t)
{
//调用仓储写入记录
return 0;
}
}
欢迎大家提意见了