我正在构建一个库来自动为我正在处理的项目中的对象创建表单。
代码库在 C# 中,本质上我们有大量不同的对象来存储有关不同事物的信息。如果我将这些对象作为 JSON 发送到客户端,以编程方式检查它们以生成所有属性的表单就足够容易了。
问题是我希望能够创建一种在客户端强制执行权限和进行验证的简单方法。它需要按字段级别在字段上完成。
在 javascript 中,我会通过创建一个并行对象结构来做到这一点,它具有某种
{ permissions : "someLevel", validator : someFunction }节点上的对象。空节点意味着免费权限和通用验证。这样我就可以简单地遍历新对象和权限对象,运行检查并处理结果。
因为我对 javascript 的锤子太熟悉了,所以这真的是我能看到的处理这个问题的唯一方法。因此,我的第一个实现使用反射让我将对象视为字典,可以通过编程方式对其进行迭代,然后我只有可以与之比较的 PermissionRule 对象字典的字典。
非常javascripty。很尴尬。
有没有更好的方法可以做到这一点?本质上是一种将数据集与每个属性相关联,然后迭代这些属性的方法。
还是我做错了?
最佳答案
听起来您在描述自定义属性 - 即
[Permissions("someLevel"), Validator("someFunction")]
public string Foo {get;set;}
这需要一些反射来读取属性,但这是装饰类型/成员/等的一种很好的方式。您还可以查看预滚动的 [PrincipalPermission]
进行安全检查。这是你的意思吗?
注意以上要求:
public class PermissionsAttribute : Attribute {
private readonly string permissions;
public string Permissions { get {return permissions;}}
public PermissionsAttribute(string permissions) {
this.permissions = permissions;
}
}
(另一个类似)
您可以使用 Attribute.GetCustomAttributes
读取它们
关于c# - 在没有反射的情况下将 "Code/Properties/Stuff"与 C# 中的字段相关联。我太被 Javascript 灌输了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2484770/