我正在开发一个用 .NET 编写的遗留 Web 应用程序。在应用程序启动时,它会检查登录的用户类型,并根据用户类型确定要显示的 UI 元素。
现在实现的方式是一系列 if 语句来处理每个用户类型的情况,然后是一个函数调用,以根据用户类型将各种 UI 元素设置为可见或不可见。问题是函数调用有点混乱。大约有 500 行以下内容:
setTabsVisible(true, true, true, true, true, true, true, true, true, true, false, false);
if (!locked)
{
setActionButtonsVisibile(true, false, true, "Submit", "");
script += setTabsReadOnly(false, false, false, false, false, false, true, false, false, false, true, true);
script += setSubTabsReadOnly(true, true, false, true, true, true, false, false, true, true, false, true);
}
script += setSubTabsVisible(false, false, false, false, false, false, true, false, false, true, true);
乍一看,所有这些真、真、假、真等都不是很可读。要查看正在打开或关闭的内容,您必须将鼠标悬停在函数上并将布尔值与参数列表匹配。
所以我在想一个更好的解决方案可能是一个位字段,它是由按位或一起的常量构建的。这样一个函数调用可能看起来更像这样:
setTabsReadOnly(notesTab | documentsTab | signoffTab | etc);
但是,C# 似乎不支持位域。有更好的解决方案吗?或者它甚至值得改变?