Как избежать шаблонного кода в статических классах?C#

Место общения программистов C#
Anonymous
Как избежать шаблонного кода в статических классах?

Сообщение Anonymous »

У меня есть следующий код:

Код: Выделить всё

public static class ScriptingSymbolDefiner_JSON_DOT_NET
{
//different for every definer class
private const string Symbol = "JSON_DOT_NET";
private static List buildTargets = new()
{
NamedBuildTarget.Android, NamedBuildTarget.iOS, NamedBuildTarget.NintendoSwitch, NamedBuildTarget.Server,
NamedBuildTarget.Standalone
};

//from here on all code will be the same for every definer class
private const string MenuName = "Wichtel/Scripting Symbols/" + Symbol;
private const string SettingName = "EnableScriptingSymbol_" + Symbol;

public static bool IsEnabled
{
get => EditorPrefs.GetBool(SettingName, false);
set => EditorPrefs.SetBool(SettingName, value);
}

[MenuItem(MenuName)]
private static void ToggleAction()
{
IsEnabled = !IsEnabled;
SymbolDefinerUtilities.UpdateSymbolDefinition(Symbol, IsEnabled, buildTargets);
}

[MenuItem(MenuName, true)]
private static bool ToggleActionValidate()
{
Menu.SetChecked(MenuName, IsEnabled);
return true;
}
}
Идея состоит в том, что будет несколько классов, подобных представленному. Единственная разница будет заключаться в значениях Symbol и buildTargets. Классы должны быть статическими, потому что это требование Unity при использовании атрибута [MenuItem()].
Есть ли возможность сделать это более элегантно с меньшим количеством шаблонов? Абстрактный базовый класс не работает для статических классов.

Подробнее здесь: https://stackoverflow.com/questions/783 ... ic-classes

Вернуться в «C#»