「共通」プロジェクトで解決策があります。この「共通」プロジェクトは、ソリューション内の他のプロジェクトで使用されます。
この「Common」プロジェクト内には、「CsvUtilities.cs」や「JsonUtilities.cs」など、いくつかの異なるユーティリティ クラスを含む「Utilities」フォルダーがあります。このようなクラスがたくさんあり、これらのクラスのすべてのメソッドが純粋な関数であると仮定します。これに基づいて、これらのクラスとメソッドを静的にすることは理にかなっています。次に、他のプロジェクトから共通プロジェクトをインポートして、次のようなことを行うことができます。
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();
}
ただし、このソリューションには大きな問題があります。これが機能するためには、さまざまなユーティリティ クラスとそのメソッドが静的であってはなりません。これは、ユーティリティ クラス/メソッドにとって扱いにくいものです。
他の誰かがこのようなことをしている例を見つけることができませんでした. この「ユーティリティ」を使用する最も合理的な方法は何ですか? ユーティリティクラス/メソッドを静的に保ちながら構造化しますか?