如何使用 类 链静态调用实用程序方法?
How can I call utility methods statically with a chain of classes?
我有一个 "Common" 项目的解决方案。此 "Common" 项目被解决方案中的其他项目使用。
在这个 "Common" 项目中,我有一个 "Utilities" 文件夹,其中包含几个不同的实用程序 class,例如 "CsvUtilities.cs" 和 "JsonUtilities.cs"。假设我可以有很多这样的 classes,并且这些 classes 中的所有方法都是纯函数。基于此,将这些 classes 和方法设为静态是有意义的。然后我可以从其他项目导入公共项目并执行以下操作:
CsvUtilities.StaticCsvMethod();
JsonUtilities.StaticJsonMethod();
这个有效,我觉得这个比较正常。
现在的问题是我想创建一个层次结构来访问静态实用程序方法。我希望能够在 IDE 中键入 "Utilities." 并让智能感知显示所有现有实用程序 classes,然后是该实用程序中的所有方法 class.
所以我想要的代码如下所示:
Utilities.Csv.StaticCsvMethod();
Utilities.Json.StaticJsonMethod();
我通过执行以下操作实现了这个想法:
public static class Utilities
{
public static CsvUtilities Csv { get; } = new CsvUtilities();
public static JsonUtilities Json { get; } = new JsonUtilities();
}
但是,这个方案有一个很大的问题。为此,各种实用程序 classes 及其方法必须不再是静态的,这对于实用程序 classes/methods.
来说很尴尬
我找不到其他人做类似事情的例子。在保持实用程序 classes/methods 静态的同时使用此 "Utilities." 结构的最合理方法是什么?
如果在 Utilities
中嵌套静态 class Json
,则可以得到 Utilities.Json.StaticJsonMethod();
public static class Utilities
{
public static class Json
{
public static void StaticJsonMethod() { }
}
}
您可以使用命名空间(或嵌套 类)像这样嵌套您的调用。请参阅以下示例
namespace Utilities
{
public static class Json
{
public static void StaticJsonMethod()
{
// Do something
}
}
}
您可以使用 Utilities.Json.StaticJsonMethod()
调用该方法。
要添加另一个级别,您只需将 "category" 附加到命名空间:
namespace Utilities.Formats
{
public static class Json
{
public static void StaticJsonMethod()
{
// Do something
}
}
}
您可以使用 Utilities.Formats.Json.StaticJsonMethod()
调用该方法
我有一个 "Common" 项目的解决方案。此 "Common" 项目被解决方案中的其他项目使用。
在这个 "Common" 项目中,我有一个 "Utilities" 文件夹,其中包含几个不同的实用程序 class,例如 "CsvUtilities.cs" 和 "JsonUtilities.cs"。假设我可以有很多这样的 classes,并且这些 classes 中的所有方法都是纯函数。基于此,将这些 classes 和方法设为静态是有意义的。然后我可以从其他项目导入公共项目并执行以下操作:
CsvUtilities.StaticCsvMethod();
JsonUtilities.StaticJsonMethod();
这个有效,我觉得这个比较正常。
现在的问题是我想创建一个层次结构来访问静态实用程序方法。我希望能够在 IDE 中键入 "Utilities." 并让智能感知显示所有现有实用程序 classes,然后是该实用程序中的所有方法 class.
所以我想要的代码如下所示:
Utilities.Csv.StaticCsvMethod();
Utilities.Json.StaticJsonMethod();
我通过执行以下操作实现了这个想法:
public static class Utilities
{
public static CsvUtilities Csv { get; } = new CsvUtilities();
public static JsonUtilities Json { get; } = new JsonUtilities();
}
但是,这个方案有一个很大的问题。为此,各种实用程序 classes 及其方法必须不再是静态的,这对于实用程序 classes/methods.
来说很尴尬我找不到其他人做类似事情的例子。在保持实用程序 classes/methods 静态的同时使用此 "Utilities." 结构的最合理方法是什么?
如果在 Utilities
Json
,则可以得到 Utilities.Json.StaticJsonMethod();
public static class Utilities
{
public static class Json
{
public static void StaticJsonMethod() { }
}
}
您可以使用命名空间(或嵌套 类)像这样嵌套您的调用。请参阅以下示例
namespace Utilities
{
public static class Json
{
public static void StaticJsonMethod()
{
// Do something
}
}
}
您可以使用 Utilities.Json.StaticJsonMethod()
调用该方法。
要添加另一个级别,您只需将 "category" 附加到命名空间:
namespace Utilities.Formats
{
public static class Json
{
public static void StaticJsonMethod()
{
// Do something
}
}
}
您可以使用 Utilities.Formats.Json.StaticJsonMethod()