我如何通过一连串的类静态地调用实用程序方法?

问题描述 投票:0回答:1

我有一个“ Common”项目的解决方案。解决方案中的其他项目使用此“公共”项目。

在这个“公共”项目中,我有一个“实用程序”文件夹,其中包含几个不同的实用程序类,例如“ 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();
}

但是,这种解决方案存在很大的问题。为此,各种实用程序类及其方法必须不再是静态的,这对于实用程序类/方法而言是尴尬的。

我找不到其他人做这样的事的例子。我使用此“实用程序”的最合理方法是什么。结构,同时还使实用程序类/方法保持静态?

c# static-methods utility-method
1个回答
0
投票

如果在Utilities.Json.StaticJsonMethod();中嵌套静态类Json,则可以具有Utilities

public static class Utilities 
{
    public static class Json
    {
         public static void StaticJsonMethod() { }
    }
}

0
投票

您可以使用名称空间(或嵌套的类)来嵌套您的调用。参见以下示例

namespace Utilities
{
    public static class Json
    {
        public static void StaticJsonMethod()
        {
            // Do something
        }
    }
}

您可以使用Utilities.Json.StaticJsonMethod()调用该方法

© www.soinside.com 2019 - 2024. All rights reserved.