Beschreibung:
Wenn ich beispielsweise die MenuItem-Funktion von Unity verwendet habe, habe ich einen Fehler gemeldet: "Das Feature-Argument muss ein konstanter Ausdruck, ein Ausdruckstyp oder ein Arrayerstellungsausdruck des Feature-Parametertyps sein."
Nach mehreren Positionierungen liegt der Grund darin, dass meine Zeichenfolge nicht mit const definiert ist. Für Merkmale muss der tatsächliche Parameter ein konstanter Wert sein, und was ich definiere, ist eine Variable. Außerdem gibt es keine schreibgeschützte Deklaration. Verwendet werden die Gründe gesehen: C # Wissensreihe: der Unterschied zwischen readonly und const
public static string CustomEidorMenu = "CustomEidorMenu";
public static readonly string CustomEidorMenu = "CustomEidorMenu";
Nach dem Testen funktioniert die folgende Codezeile nicht. In C # können während der Kompilierung nur "+" Zeichenfolgenverkettungszeichenfolgenkonstanten bestimmt werden, während die anderen dynamische Verkettungen sind.
[MenuItem($"{EditorConfig.CustomEidorMenu}/window")]
Die Lösung ist also wie folgt zusammengestellt
public const string CustomEidorMenu = "CustomEidorMenu";
[MenuItem(EditorConfig.CustomEidorMenu + "/window")]