将类名称层次结构检索为字符串

时间:2010-04-09 17:21:07

标签: c#

我们的系统复杂性已经上升到我们需要从数据库中更加具体地将与客户端绑定的权限名称。在客户端中,权限是从静态类引用的,因为许多客户端功能依赖于每个用户拥有的权限,并且角色具有多种多样性。我引用this post作为示例,但我正在寻找更具体的用例。以这个引用为例,其中PermissionAlpha是一个const字符串:

return HasPermission(PermissionNames.PermissionAlpha);

这很好,除非现在事情变得越来越复杂,所以这些类的结构如下:

public static class PermissionNames
{
    public static class PermissionAlpha
    {
        public const string SubPermission = "PermissionAlpha.SubPermission";
    }
}

我正在尝试在这个新设置中找到一种简单的方法来引用PermissionAlpha,它将与上面的第一个声明类似。这样做的唯一方法是如何在下面的示例中提取类名的值吗?我试图将所有名称保存在一个可以在应用程序中的任何位置引用的地方。

public static class PermissionAlpha
{
    public static string Name { get { return typeof(PermissionAlpha).Name; } }
}

**编辑** - 添加了缺失的权限名称。

2 个答案:

答案 0 :(得分:0)

为什么不在有问题的类上创建可反射的属性?这样就可以添加所需的所有额外信息。我在博客文章中提供了一种划分属性的方法:

C# Using Extended Attribute Information on Objects

HTH

答案 1 :(得分:0)

对于您的项目规模而言,这可能对您来说太大了,但我们将所有业务对象拆分为部分类。一个用于手动更改,一个生成。在代码生成期间,我们将权限密钥写入来自“单一事实来源”的部分类的生成端。我们使用一组类作为我们的事实来源和CodeDom来生成,但您也可以使用数据库作为源,并使用T4,CodeSmith或其他来生成。