以下是我想要使用它们的方法:
class SecuredModel
{
public SecuredModel() { }
[Permission(Permissions.Read)]
public void restrictedMethod()
{
if (IsPermitted)
{
// code
}
}
}
我在这里定义了“Permission”类:
[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表达式过于复杂。它不应该那么难,对吧?
答案 0 :(得分:1)
属性是一种装饰类的方法,但它们只有在你有一些抽象(如IDE或一些检查类的前期处理机制)来强制实现其目的时才有用。在他们装饰的方法/属性中使用它们没有意义(性能等等。)
考虑添加一些在检查类后设置的额外属性(私有/受保护),这样就不会一直反映出来。
以下是有关属性的有用链接:Reflection - get attribute name and value on property