c# - 在没有反射的情况下将 "Code/Properties/Stuff"与 C# 中的字段相关联。我太被 Javascript 灌输了

标签 c# javascript forms reflection

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

代码库在 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/

相关文章:

javascript - 在工厂函数中公开参数的最佳方法是什么?

C# 线程 - 在线程之间发布消息

javascript - 如何创建一个函数来查找字符串中的大写字母并添加空格

c# - 如何测试 C# ref 参数是否引用相同的项目

javascript - 是否可以正确计算大于 2^53 的数字?

html - 我可以对 HTML 表单使用 HTML5 下载属性吗?

php - 如何通过 POSTMAN 模拟在 POST API 调用中发送表单数据

css - 如何布局具有 1 个输入字段 + 提交按钮的表单,以便 <form> 和 <fieldset> 背景不会发光?

c# - 无法在泛型委托(delegate)中推断出类型

c# - WCF 服务依赖项