2016-04-21 115 views
1

我有一個靜態類(稱爲實用程序)與幾個實用程序方法不與任何特定的對象相關聯。然而,大多數這些方法都是參考相同的對象。C#靜態類:我應該將該對象傳遞給構造函數嗎?

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)方法可能不在工具類中,或者(2)工具類不應該是靜態的。

我應該在Utils類中創建一個靜態構造函數並從主類初始化上下文對象嗎?

當上下文在其他地方創建時,這可能是不可能的,因爲您的工具類可能會在意外的時間初始化。

或者我應該讓每個調用這些靜態方法的類都通過上下文對象,因爲它們已經有了對它的引用?

如果你決定這樣做,也許這是一個好主意,該方法進入Context,或者如果它是不可能的,讓你的實用方法爲擴展方法:

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

這將讓你節省了打字的時間,因爲你不必拼出你的工具類的名字。

+0

在一個執行許多不同操作(例如在屏幕上顯示吐司,讀取設置等,檢查一個調用是否活動)的Android項目中,需要引用由系統在主類中創建的Context對象。這就是爲什麼不同類中的許多方法需要引用同一個上下文對象。另外我沒有代碼給Context類,因爲它不是由我創建的。 –

+1

@AliZahid這是擴展方法的一個很好的用例。 – dasblinkenlight

相關問題