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表达式过于复杂了。应该没那么难吧?
属性是装饰类的一种方式,但只有当你有一些抽象(比如IDE或一些检查类的前期处理机制)来实现它们的目的时,它们才有用。在他们装饰的方法/物业(性能等)中使用它们是没有意义的
考虑添加一些在检查类之后设置的额外属性(私有/受保护),这样就不会一直反映。
这里有一个关于属性的有用链接:Reflection-获取属性上的属性名称和值