首页 文章

C#静态类:我应该将对象传递给构造函数吗?

提问于
浏览
1

我有一个静态类(称为Utils),其中包含一些与任何特定对象无关的实用方法 . 然而,大多数这些方法都引用了同一个对象 .

public static string Method1(Context context)
{......}

public static string Method2(Context context, Etc etc)
{......}

public static string Method3(Context context)
{......}

此(上下文)对象是在系统的主类中创建的 . 但是这些静态方法在以后的事件中用于系统的不同部分 . 我应该在Utils类中创建一个静态构造函数并从主类初始化上下文对象吗?或者我应该让调用这些静态方法的每个类都传递上下文对象,因为它们已经引用了它?每种方法的优缺点是什么?

编辑:顺便说一句,如果有人好奇,这是一个Xamarin.Android项目 .

1 回答

  • 1

    然而,大多数这些方法都引用了同一个对象 .

    这通常是一个非常强烈的迹象,表明(1)方法可能在实用程序类中不合适,或者(2)实用程序类不应该是静态的 .

    我应该在Utils类中创建静态构造函数并从主类初始化上下文对象吗?

    当在其他地方创建上下文时,这可能是不可能的,因为您的实用程序类可能会在某个意外时间初始化 .

    或者我应该让调用这些静态方法的每个类都传递上下文对象,因为它们已经引用了它?

    如果您决定这样做,也许最好将方法移动到 Context ,或者如果不可能,请将实用程序方法转换为扩展方法:

    public static string Method1(this Context context) {
        ...
    }
    

    这样可以节省打字,因为您不必拼出实用程序类的名称 .

相关问题