繁体   English   中英

将“代码/属性/东西”与C#中的字段关联,不带反射。 我对Javascript过于灌输

[英]Associate “Code/Properties/Stuff” with Fields in C# without reflection. I am too indoctrinated by Javascript

我正在构建一个库,以便在我正在处理的项目中自动为对象创建表单。

代码库在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读出它们

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM