使用资源作为属性的参数

时间:2013-10-29 20:15:10

标签: c#

有一种方法可以将静态资源用作属性的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文字资源

1 个答案:

答案 0 :(得分:1)

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

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

public sealed class AllowedByResourceAttribute : AllowedAttribute {
    public AllowedByResourceAttribute(string name, string resourceName) : base(name, GetResource(resourceName)) { }
}