gpt4 book ai didi

c# - 在 C Sharp 中模拟值类型多态性

转载 作者:太空宇宙 更新时间:2023-11-03 14:34:15 27 4
gpt4 key购买 nike

我正在寻找一种方法来创建某种值类型的分层类结构。我知道枚举不支持继承,因为它们是值类型,因此是密封的,所以我可能正在寻找某种静态类实现。

我这样做的目的是重新定义我正在处理的这个 ASP.NET 应用程序中的角色。目前,角色是字符串常量(ROLE_ADMIN、ROLE_USER 等)并被放入 session 中并在整个应用程序中进行检查,如下所示:Person.getRole() == ROLE_ADMIN(实际上是字符串比较)。我想重构它,以便我可以拥有类型安全性,以及如下所述的某种多态行为。

考虑以下角色结构:

             user1
Group1
user2
Admin
User3

如果一个人的角色设置为 Group1,但页面上的某个元素仅对 user1 可见,那么我希望语句 Person.getRole() == user1 为真。

编辑:

将上述结构想象成一棵树,我希望能够根据叶子或节点定义用户,并根据叶子或节点检查权限。然而,这引发了一个难题,根据节点检查权限是否检查用户是否属于一个组(group1),或者是一个组(Admin)。我认为问题在于将我的树的根节点命名为“Admin”是一种误导,因为节点应该被视为组而不是角色本身。根节点应该类似于“All”,当它被定义为“All”时,将继承树的所有叶子,因此属于所有组。

最佳答案

我不确定什么值类型与此有关(字符串是引用类型)。这里常用的方法是使用 IPrincipal.IsInRole ,或类似的东西。

您的“等级”问题将转移到角色被填补的部分。

关于c# - 在 C Sharp 中模拟值类型多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1683203/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com