В Unity C# у меня есть базовый класс Baker, он является производным от ScriptableObject, а я наследую от него CakeBaker, BreadBaker, PieBaker.
ScriptableObjects можно создавать только статически, использование CreateAsset()
Это приводит меня к ситуации, когда каждый из моих пекарей теперь содержит идентичный метод CreateBaker(), с той лишь разницей, что это Тип.
статика и обобщения несовместимы, и статический метод работает с классом, в котором он объявлен, а не с классом, производным от него.
Я думал о макросах в стиле C/C++ , но AFAICS не имеет эквивалента в C#.
Как мне избежать повторения (и всего, что с этим связано) в этой ситуации?
это небольшой метод, а пекарей в настоящее время не так уж и много, поэтому я просто скопировал метод и приступил к нему, но мне было интересно, есть ли у коллективного разума идея получше.
private static string assetPath => "Assets/PieBakerAsset.asset";
public static void CreateAsset(bool updateAssetDatabase = true)
{
var instance = CreateInstance();
// Save the newly created instance to the AssetDatabase if it does not exist
AssetDatabase.CreateAsset(instance, assetPath);
if (updateAssetDatabase)
{
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();
}
}
public static Baker CreateInstance()
{
return CreateInstance();
}
Подробнее здесь: https://stackoverflow.com/questions/786 ... ic-methods
DRY — производный класс со статическими методами ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Кэширование с использованием SpatialFocus.MethodCache, но со статическими методами в C#
Anonymous » » в форуме C# - 0 Ответы
- 23 Просмотры
-
Последнее сообщение Anonymous
-