是否有可能拥有一个包含具有多个值的条目的资源文件。
例如。我喜欢有类似的东西。
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));
可能您想将一组已包装的对象存储在某种缓存中,否则。
我是一名优秀的程序员,十分优秀!