gpt4 book ai didi

C# nameof 变成强类型参数?

转载 作者:太空宇宙 更新时间:2023-11-03 18:03:44 24 4
gpt4 key购买 nike

使用 Entity Framework ,我有一个名为权限的实体,它有一组 bool s 指定可以做什么和不可以做什么。

有点像:

public class Permissions
{
public int Id {get;set;}
public int GroupId {get;set;}
public bool ViewRecords {get;set;}
public bool EditRecords {get;set;}
public bool DeleteRecords {get;set;}
public bool CreateRecords {get;set;}
public bool CreateSubGroups {get;set;}
}

你明白了。每个用户组都有其中一个,这一切都很好。

我有一个安全服务类,它针对正确的组和操作验证和检查这些信息——同样,一切都运行良好——但是我留下了一些我想避免的魔法字符串。

例如: public bool HasPermission(int groupId, string action)
我想: public bool HasPermission(int groupId, Permission action)
目前,我正在使用 nameof , 所以:
bool go = HasPermission(123, nameof(Permission.ViewRecords));

但是,有没有办法映射类属性,所以它是:
bool go = HasPermission(123, Permission.ViewRecords);

我可以用枚举来做到这一点,并保持两者相互镜像,但这是我想避免的开销 - 虽然 nameof 有效,但事实是该方法可以接收任何字符串,因此以后可能会被分解线。

最佳答案

我只需创建一个方法 GetPermission (如果你还没有):

Permissions GetPermission(int groupId) { ... }

然后像这样使用它:
if (GetPermission(123).ViewRecords) { ... }

关于C# nameof 变成强类型参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40681668/

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