2016-07-28 81 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 
    } 
} 

我希望这是什么你正在寻找,这是一个足够的解释。如果我太不清楚,那就问问什么是混乱。

相关问题