考虑下面的代码:如何追加属性属性常量值
[Category("USER")]
public class Permissions
{
public const string Create= "USER-CREATE";
public const string Edit= "USER-EDIT";
.
.
}
我想从常量的值删除USER-
一部分,因为我通过Category
属性指定。在这种情况下,有什么方法可以在拨打Permissions.Create
时获得USER-CREATE
的值?如果不是,如何实现与另一种方法相同的功能?
编辑
我,因为我将与属性要用就用常量的值。
例如:[Attribute(Permissions.Create)]
编辑对我的真实情况后@HimBromBeere
新的代码提示
[Permissions(Modules.Administration, HomePermissions.Category)]
public class UserPermissions
{
private const string Category = "USER";
private const string Prefix = Modules.Administration + "-" + Category + "-";
public const string Create = Prefix + "CREATE";
public const string Edit = Prefix + "EDIT";
}
您不能更改'const'值,这就是为什么它被称为常量。但我不确定你想要什么。你想从常量中删除'“USER”',但是当*访问那个常量时仍然会得到''USER-CREATE''?你将不得不将类名称(从属性中读取)与'const'连接起来,这对我来说听起来有点矫枉过正。 – HimBromBeere
如果你有其他程序集引用的常量值,那么最好使用'static readonly',因为如果你使用'const',那么在编译相关程序集时可能会内联这个值,这会导致意想不到的后果。如果您确实需要*,只能使用'public const' *(例如,用于Attribute构造函数)。 – Dai