У меня есть решение с "Общим" проектом. Этот «общий» проект используется другими проектами в решении.
В этом «Общем» проекте у меня есть папка «Утилиты» с несколькими разными классами утилит, например, «CsvUtilities.cs» и «JsonUtilities.cs». Предположим, что у меня может быть много таких классов и что все методы в этих классах являются чистыми функциями. Исходя из этого, было бы разумно, чтобы эти классы и методы были статическими. Затем из других проектов я могу импортировать общий проект и делать такие вещи, как:
CsvUtilities.StaticCsvMethod();
JsonUtilities.StaticJsonMethod();
Это работает, и я думаю, что это относительно нормально.
Теперь сложность заключается в том, что я хочу создать иерархическую структуру для доступа к статическим служебным методам. Я хочу иметь возможность набирать «Утилиты». в IDE, и Intellisense покажет все существующие служебные классы, за которыми следуют все методы в этом служебном классе.
Итак, код, который я хочу, будет выглядеть так:
Utilities.Csv.StaticCsvMethod();
Utilities.Json.StaticJsonMethod();
Я реализовал эту идею, сделав следующее:
public static class Utilities
{
public static CsvUtilities Csv { get; } = new CsvUtilities();
public static JsonUtilities Json { get; } = new JsonUtilities();
}
Однако с этим решением есть большая проблема. Чтобы это работало, различные служебные классы и их методы больше не должны быть статическими, что неудобно для служебных классов/методов.
Я не смог найти пример того, как кто-то еще делал что-то подобное. Как мне разумнее всего использовать эту "Утилиту". структура, сохраняя при этом статические классы/методы утилиты?
Namespaces
или частично вложенные классы? - person Sani Singh Huttunen   schedule 27.02.2020Utilities
можно было использовать как ярлык в IntelliSense? Как правило, организация типов не имеет значения при их использовании, потому что вы в любом случае импортируете их с помощьюusing
; то есть вы не видите полного или частичного пространства имен в момент использования, потому что в этом нет необходимости. - person Lance U. Matthews   schedule 27.02.2020