C#权限的属性,或者我错过了属性的要点

本文关键字:属性 错过了 权限 或者 | 更新日期: 2023-09-27 18:27:18

以下是我想要如何使用它们:

class SecuredModel
{
    public SecuredModel() { }
    [Permission(Permissions.Read)]
    public void restrictedMethod()
    {
        if (IsPermitted)
        {
            // code
        }
    }
}

我在这里定义了"权限"类:

[System.AttributeUsage(System.AttributeTargets.Method, AllowMultiple = true)]
class Permission : System.Attribute
{
    private Permissions PermissionsRequired { get; set; }
    public bool IsPermitted
    {
        // some code to check for permissions
    }
    public Permission(Permissions permissionsRequired)
    {
        this.PermissionsRequired = permissionsRequired;
    }
}

我遇到的问题是,我不知道如何使用分配给方法的属性。我想从方法中访问它们,有可能吗?如果没有,我可以从方法之外访问它们吗?我在看过的MSDN页面中都找不到这种用法,在SO上也看到了一些答案,但我觉得lambda表达式过于复杂了。应该没那么难吧?

C#权限的属性,或者我错过了属性的要点

属性是装饰类的一种方式,但只有当你有一些抽象(比如IDE或一些检查类的前期处理机制)来实现它们的目的时,它们才有用。在他们装饰的方法/物业(性能等)中使用它们是没有意义的

考虑添加一些在检查类之后设置的额外属性(私有/受保护),这样就不会一直反映。

这里有一个关于属性的有用链接:Reflection-获取属性上的属性名称和值