gpt4 book ai didi

c# - 具有多个值的资源文件(或通过代码访问注释列)

转载 作者:太空宇宙 更新时间:2023-11-03 13:50:56 26 4
gpt4 key购买 nike

是否有可能拥有一个包含具有多个值的条目的资源文件。

例如。我喜欢有类似的东西。

Resource.CanViewSection.Value
Resource.CanViewSection.Description.

我这样做的原因是我们的数据库是用代码优先方法创建的,我们将需要在我们的应用程序中实现非常精细的权限,所以我期待很多权限或者可能重复items,而 id 喜欢将它们全部集中起来。

因此在我们的数据库播种器中我可以做这样的事情:

private IEnumerable<Permission> SetupParameterPermissions()
{
var innerCollection = new List<Permission>
{
//id like to do this
this.New(Resource.CanViewSection.Value, Resource.CanViewSection.Description),

//instead of this
this.New("CanViewSection", "User can view the section")
};

return this.SetGroupId(innerCollection, PermissionGroupEnum.Parameters);
}

在我们的服务中,我们可以像这样对资源运行访问检查:

例如。

if(UserHasAccessTo(Resource.CanViewSection.Value))
{
// do something amazing
}

EG,我已经尝试了几种方法。将名称添加到资源的值列和注释部分的描述,但我不知道如何以编程方式访问资源文件的注释列。

我意识到我也可以使用 ENUMS 实现这种效果,但我在猜测最好的方法是什么,因为我们将拥有大量权限,以及以某种方式拥有 2 个同样巨大的巨大 ENUM 的想法扩展让我感到奇怪。

    public enum SomeEnum
{
CanViewSection
}

public static class SomeEnumExtensions
{
public static string GetValue(this SomeEnum)
{
switch (me)
{
case SomeEnum.CanViewSection:
return "CanViewSection";
default:
return "Fail!";
}
}

public static string GetDescription(this SomeEnum)
{
switch (me)
{
case SomeEnum.CanViewSection:
return "YOLO!";
default:
return "Fail!";
}
}
}

我也愿意接受其他建议吗?

最佳答案

也许你可以试试这个(或类似的东西):

1) 使用您的 ID 创建资源文件。 F.E.

   Resource.Code1
Resource.Code2

2) 创建 XML 文件并将其添加到项目中。它看起来可能是这样的:

   <codes>
<Code1 Value="Some value text" Description="Some description">
<Code2 Value="Some value text" Description="Some description">
</codes>

3) 创建某种具有 2 个字段的包装器类 - 值和描述,f.e.

    public class ResourceWrapper
{
public string Value {get;set;}
public string Description{get;set;}
}

3) 然后创建简单的静态方法,该方法将通过您的资源文件中的代码从 XML 文件中获取值,对其进行解析,并返回 ResourceWrapper 作为结果。

  public static class ResourceHelper
{
public static ResourceWrapper GetSomeWrapper(string resourceCode);
}

调用看起来像(在你的情况下):

  ResourceWrapper wrap = ResourceHelper.GetSomeWrapper(Resource.Code1.ToString());
this.Add(new Permission(wrap.Value, wrap.Description));

可能您想将一组已包装的对象存储在某种缓存中,否则。

关于c# - 具有多个值的资源文件(或通过代码访问注释列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13740819/

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