【问题标题】:Set attribute name property from static data in C#在 C# 中从静态数据中设置属性名称属性
【发布时间】:2015-06-11 08:46:44
【问题描述】:

如何在 C# 中从静态数据中设置属性名称属性:

[FaraAuthorize(Roles = RoleValues.SiteManager)] // Error here
public class ProjectsController : FaraController
{
}

public static class RoleValues
{
    static RoleValues()
    {
        using (var db = FaraIdentityEntity.GetEntity())
        {
            SiteManager = db.Roles.Single(item => item.Name == "SiteManager").Id;
        }
    }

    public static string SiteManager = "";
}

错误:属性参数必须是常量表达式 typeof 属性参数的表达式或数组创建表达式

我可以将SiteManager 设为const 字段,但是我无法在静态构造函数中设置SiteManager 的值。如何解决这个问题?

【问题讨论】:

    标签: c#


    【解决方案1】:

    你不能,基本上。属性值直接嵌入到编译的程序集中——它们无法在执行时确定。如果您需要仅在执行时可用的信息,则需要一种不要求该信息出现在属性值中的不同方法。

    (嗯,您可以使用相关的属性数据动态生成类型,但这可能比任何其他方法都更难......)

    【讨论】:

      猜你喜欢
      • 2014-04-04
      • 1970-01-01
      • 2018-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      • 1970-01-01
      • 2014-03-10
      相关资源
      最近更新 更多