2017-05-09 3 views
-1

함수를 매개 변수로 전달하여 다른 다른 클래스 "B"의 메서드를 호출하려는 클래스 "A"가 있습니다. 매개 변수로 전달 된 함수는 B 클래스에 있습니다. 따라서 클래스 A에서 메서드를 호출 할 경우 어떻게해야합니까?다른 클래스의 C#에서 매개 변수로 메서드 전달

Visual Studio 2008과 .NET Framework 3.5를 사용하고 있습니다.

나는 이것을 post으로 보았지만 다른 메소드를 매개 변수로 전달하지만 다른 클래스가 아닌 동일한 클래스에서 main 메소드를 호출하는 방법을 알려줍니다. 예를 들어 아래 해당 게시물에서 예를 들어

가 제공됩니다

public class Class1 
{ 
    public int Method1(string input) 
    { 
     //... do something 
     return 0; 
    } 

    public int Method2(string input) 
    { 
     //... do something different 
     return 1; 
    } 

    public bool RunTheMethod(Func<string, int> myMethodName) 
    { 
     //... do stuff 
     int i = myMethodName("My String"); 
     //... do more stuff 
     return true; 
    } 

    public bool Test() 
    { 
     return RunTheMethod(Method1); 
    } 
} 

하지만 방법은 다음을 수행 :

public Class A 
{ 
     (...) 

     public bool Test() 
     { 
      return RunTheMethod(Method1); 
     } 

     (...) 
} 


public class B 
{ 
    public int Method1(string input) 
    { 
     //... do something 
     return 0; 
    } 

    public int Method2(string input) 
    { 
     //... do something different 
     return 1; 
    } 

    public bool RunTheMethod(Func<string, int> myMethodName) 
    { 
     //... do stuff 
     int i = myMethodName("My String"); 
     //... do more stuff 
     return true; 
    } 
} 
+0

가능한 복제 (http://stackoverflow.com/questions/2082615/pass-method-as-parameter-using-c-sharp) –

+0

@ StevenWood 그것은 중복이 아니므로, 내 게시물을 복제하기 전에 잘 읽으십시오. 동일한 클래스에서 RunTheMethod를 호출하면 해결책이 제공되지만 다른 다른 클래스에서 RunTheMethod를 호출하면 어떻게됩니까? 또한 귀하가 제공 한 링크는 이미 게시물에 나와 있습니다 (게시물의 링크 참조). – user1624552

답변

1

당신은해야 할 것 예를 들어 class B의 인스턴스가 class A 안에 있고 메소드를 호출하면 당신의 class A에 :

public Class A 
{ 
     (...) 
     private B myClass = new B(); 
     public bool Test() 
     { 
      return myClass.RunTheMethod(myClass.Method1); 
     } 

     (...) 
} 
[매개 변수 사용하여 C 번호로 전달할 방법]의
+0

하지만 클래스 B의 메서드가 공용 인 경우 작동하지만 개인적인 경우 불가능합니다. 맞습니까? – user1624552

+0

아니요, 여전히 가능합니다 – Hristo

+0

어떻게? 예를 들어 Method1이 private이고 A 클래스와 Test 메서드에서 myClass.Method1을 전달할 때 이것이 보이지 않으므로 myClass.RunTheMethod (myClass.Method1)을 return 할 수 없습니다. – user1624552

1

을 시도해보십시오이

public Class A 
{ 
     (...) 

     public bool Test() 
     { 
      var b = new B(); 
      return b.RunTheMethod(b.Method1); 
     } 

     (...) 
} 
관련 문제