1

有没有办法将静态资源用作属性的 Argumentos?

想象一下

[IsSecured("Secured","Here must be a description of the class")]
public class Secured
{
} 

我需要第二个参数是静态资源。像这样的东西

[IsSecured("Secured",ClassNames.SecuredClassNameDescription)]
public class Secured
{
    [Allowed("Secured",ClassNames.SecuredMymethodDescription)]
    public string Mymethod()
    {
    } 
} 

ClassNames是一个.resx文件,它包含一个SecuredClassNameDescriptionSecuredMymethodDescription文本资源

4

1 回答 1

1

这些是属性,而不是属性。
属性参数必须是编译时常量。

但是,您可以创建自己的继承属性,该属性在构造函数中采用资源名称(失去类型安全性)并将资源值传递给基本构造函数:

public sealed class AllowedByResourceAttribute : AllowedAttribute {
    public AllowedByResourceAttribute(string name, string resourceName) : base(name, GetResource(resourceName)) { }
}
于 2013-10-29T20:16:40.433 回答