C# make属性,它描述模型属性的AccessLevel?

C# make属性,它描述模型属性的AccessLevel?,c#,asp.net-core,custom-attributes,C#,Asp.net Core,Custom Attributes,所以。。。我有一个简单的模型叫做Employee: public class Employee { public int WorkerID { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public int Salary { get; set; } } 我想用AccessLevel这样“装饰”所有属性: [AccessLev

所以。。。我有一个简单的模型叫做
Employee

public class Employee {

    public int WorkerID { get; set; }

    public string FirstName { get; set; }

    public string LastName { get; set; }

    public int Salary { get; set; }
}
我想用
AccessLevel
这样“装饰”所有属性:

[AccessLevel(1)]
public class Employee {
    [AccessLevel(1)]
    public int WorkerID { get; set; }

    [AccessLevel(1)]
    public string FirstName { get; set; }

    [AccessLevel(1)]
    public string LastName { get; set; }

    [AccessLevel(2)]
    public int Salary { get; set; }
}
我读过,但仍然不知道如何创建一个正确的,并以某种方式访问它喜欢

 Employee.Salary.GetAccessLevel();

我如何制作那种属性?或者可能有更好的方法来实现这一点?

您可以尝试使用
反射
通过
GetCustomAttribute
方法获取属性属性,并使用linq检查auth值

typeof(Employee)
        .GetTypeInfo()
        .GetProperties()
        .Where(x=>x.GetCustomAttribute<AccessLevel>().val > 1) // here can write your logic.
        .Select(x => x.Name);
typeof(员工)
.GetTypeInfo()
.GetProperties()
.Where(x=>x.GetCustomAttribute().val>1)//这里可以编写您的逻辑。
.选择(x=>x.Name);

当其他用户(不允许查看薪资)希望访问员工数据,但您不想显示薪资时,您是否需要此功能?您引用的页面上的后续链接讨论了这一示例。如果
User
具有
AccessLevel
1,他只能看到1或更低的属性。@AndyG谢谢。我读过这个。但是没有看到任何访问此数据的示例。无论如何,如果您确实想要,您可以使用
反射
来查找值。就个人而言,我觉得如果你需要这样做,那么它应该是模型的一部分,而不是一个属性——一个装饰器。