2016-07-28 72 views
0

我有幾個可重複使用的方法GetChartData()和GetPeopleData()。他們存儲在一個名爲CentralData.cs如何從另一個控制器調用方法?

我想能夠從一個不同的控制器調用這些方法中的任何一個,但我不知道我會怎麼做。有誰知道我如何調用位於另一個控制器中的方法?

如果該方法是在同一個班這將是簡單的:

MyMethod() 
{ 
    GetChartData(); 
} 

因此,如果該方法是在不同的控制器和蘇哈不同的類,我怎麼稱呼呢?

+0

你想在調用GetChartData()'''後返回'''MyMethod()''? –

+0

您的示例不夠準確,無法獲得真正的答案:例如,我們不知道「GetChartData」是否有真正的理由存在於控制器中(它可能存在於外部類,靜態幫助器類中或隨你)。如果它需要在一個控制器中,你可以使用繼承,但再一次,它是有用的更具體一點。 –

+1

如果您需要從多個控制器訪問常用功能,您應該考慮將其移入業務邏輯層是否合理。如果這看起來像是矯枉過正,至少考慮爲你的兩個控制器創建一個基類並將重用方法添加到該類中。 –

回答

0

您可以創建一個對象Controller並像簡單的類一樣調用該函數。我認爲這種方法沒有任何問題。畢竟,控制器只是一個類。 例如,

MyController obj = new MyController(); 
obj.MyFunction(); 
0

只能從另一個調用類的非靜態方法,如果你有對象的引用。
如果你在第一個控制器的地方創建第二個控制器,如:

ButtonClick(object Sender, EventArgs e) { 
    CentralData c = new CentralData(); 
} 

你可以簡單地保存在一個私有變量引用和lateron說

MyMethod() 
{ 
    c.GetChartData(); 
} 

如果您在創建他們兩個另一類您必須將CentralData對象傳遞到您的其他控制器,如

public static void Main() { 
    CentralData c = new CentralData(); 
    WindowController w = new WindowController(c); 
} 

public static void Main() { 
    CentralData c = new CentralData(); 
    WindowController w = new WindowController(); 
    w.c = c; 
} 
0

如果你的意思是你有2個控制器類:ControllerOtherController,那麼你就可以從第一類訪問位於第二類中的方法是這樣的:

class Controller 
{ 
    public void MethodA() 
    { 
     OtherController.MethodB(); // This will work because MethodB is static 
     // Like shown above you can call a static method from anywhere 
    } 
} 

class OtherController 
{ 
    public static void MethodB() // <-- Notice "static" 
    { 
     // Do stuff 
    } 
} 

我希望這是什麼你正在尋找,這是一個足夠的解釋。如果我太不清楚,那就問問什麼是混亂。

相關問題