Code unten vor:Wie Attribut Eigenschaft anhängen zu konst Werte
[Category("USER")]
public class Permissions
{
public const string Create= "USER-CREATE";
public const string Edit= "USER-EDIT";
.
.
}
I USER-
Teil von const Werte entfernen möchten, weil ich es durch Category
Attribut angeben. In diesem Fall gibt es eine Möglichkeit, USER-CREATE
Wert zu erhalten, wenn ich Permissions.Create
anrufen? Wenn nicht, wie erreicht man dieselbe Funktionalität mit einem anderen Ansatz?
bearbeiten
I const Werte verwenden, weil ich mit dem Attribut verwenden.
Zum Beispiel: [Attribute(Permissions.Create)]
Edit für meine realen Fall
Neuer Code nach @HimBromBeere vorschlagen
[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";
}
Sie können einen 'const' Wert nicht ändern, deshalb nennt man das eine Konstante. Aber ich bin mir nicht sicher, was genau du willst. Sie wollen '' USER '' aus der Konstanten entfernen, aber trotzdem '' USER-CREATE '' bekommen, wenn * auf * diese Konstante zugegriffen wird? Sie müssten den Kategorienamen (gelesen von dem Attribut) mit dem "const" verketten, was für mich etwas übertrieben klingt. – HimBromBeere
Wenn Sie konstante Werte haben, die von anderen Assemblies referenziert werden sollen, empfiehlt es sich, 'static readonly' zu verwenden, da der Wert bei der Kompilierung der abhängigen Assembly möglicherweise inline ist, wenn Sie' const' verwenden unbeabsichtigte Konsequenzen. Verwenden Sie nur 'public const' *, wenn Sie wirklich * benötigen (z. B. zur Verwendung in Attributkonstruktoren). – Dai