2016-07-28 4 views
0

나는 몇개의 재사용 가능한 메소드 GetChartData()와 GetPeopleData()를 가지고있다. CentralData.cs라는 컨트롤러에 저장됩니다.다른 컨트롤러에서 메서드를 호출하려면 어떻게해야합니까?

다른 컨트롤러에서 이러한 방법 중 하나를 호출 할 수 있기를 원하지만 어떻게 할 것인지 잘 모르겠습니다. 누구든지 내가 다른 컨트롤러에있는 메서드를 호출하는 방법을 알고 있습니까? 이 방법은 다른 컨트롤러와 sucha 다른 클래스로 경우

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(); 
} 

당신은 단순히 개인 변수에 해당 참조를 저장하고 당신이 둘을 작성하는 경우

MyMethod() 
{ 
    c.GetChartData(); 
} 

말 lateron 다른 클래스는

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

또는

같은 다른 컨트롤러에 CentralData 개체를 통과해야 당신이이 개 컨트롤러 클래스가 있다는 것을 의미하는 경우
public static void Main() { 
    CentralData c = new CentralData(); 
    WindowController w = new WindowController(); 
    w.c = c; 
} 
0

: 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 
    } 
} 

을 나는 희망이 무엇 인 당신은 찾고 있었고 이것은 충분한 설명이었습니다. 내가 너무 불분명하다면 혼란 스러울 정도의 것을 물어보십시오.

관련 문제