是否可以拥有包含多个值的条目的资源文件。
EG。我希望有类似的东西。
Resource.CanViewSection.Value
Resource.CanViewSection.Description。
我的理由是我们的数据库是使用代码第一种方法创建的,我们需要在我们的应用程序中实现非常精细的权限,所以我期待很多权限和权限。或者可能重复的项目,并且喜欢将它们全部集中在一起。
因此在我们的数据库浏览器中,我可以这样做:
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实现这种效果,但我猜测最好的方法是什么,因为我们将拥有大量的权限,并且不知何故有一个巨大的ENUM与2同样巨大的想法扩展令我感到奇怪。
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!";
}
}
}
我也接受其他建议吗?
答案 0 :(得分:1)
也许你可以试试这个(或类似的东西):
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));
可能你想在某种缓存中存储已经包装过的对象的集合,或者。