메서드를 사용하여 메서드의 이름이 들어있는 문자열 값을 기반으로 메서드를 호출 할 수 있습니까?액션 <T> 문자열 값을 기반으로 메서드를 호출하는 방법
답변
Action<T>
은 지정된 메소드를 가리킬 수있는 델리게이트 유형입니다. 당신은 문자열 변수에 저장된 이름이 실행시에 알려져있는 방법을 호출 할 경우, 당신은 반사를 사용해야 할 필요가 : 당신이 Delegate.CreateDelegate을 사용할 수 앤드류에 의해 제안
class Program
{
static void Main(string[] args)
{
string nameOfTheMethodToCall = "Test";
typeof(Program).InvokeMember(
nameOfTheMethodToCall,
BindingFlags.NonPublic | BindingFlags.InvokeMethod | BindingFlags.Static,
null,
null,
null);
}
static void Test()
{
Console.WriteLine("Hello from Test method");
}
}
MethodInfo에서 대리자 형식을 만듭니다
class Program
{
static void Main(string[] args)
{
string nameOfTheMethodToCall = "Test";
var mi = typeof(Program).GetMethod(nameOfTheMethodToCall, BindingFlags.NonPublic | BindingFlags.InvokeMethod | BindingFlags.Static);
var del = (Action)Delegate.CreateDelegate(typeof(Action), mi);
del();
}
static void Test()
{
Console.WriteLine("Hello from Test method");
}
}
'Delegate.CreateDelegate'를 사용하면 요청 된 OP와 마찬가지로'MethodInfo'에 대한 델리게이트를 생성 할 수 있습니다. –
위대한 발언 @ 앤드류. 예를 들어 답을 업데이트했습니다. –
정중하게 :) :) (+1) –
난 당신이 정말 Action<T>
단지 일반적인 방법을 원하는 생각하지 않습니다.
public void CallMethod<T>(T instance, string methodName) {
MethodInfo method = typeof(T).GetMethod(methodName);
if (method != null) {
method.Invoke(instance, null);
}
}
- 1. MethodCallExpression에서 메서드를 호출하는 방법 #
- 2. 매개 변수 값을 기반으로 메서드를 오버로드합니까?
- 3. .net winforms의 문자열 값을 기반으로 드롭 다운 값을 변경하는 방법
- 4. 웹 서비스 메서드를 호출하는 방법?
- 5. 상속 클래스에서 메서드를 호출하는 방법
- 6. 변수를 인스턴스화하여 메서드를 호출하는 방법
- 7. 루프에서 값을 호출하는 방법?
- 8. 실행중인 Windows 서비스에서 메서드를 호출하는 방법
- 9. 바 버튼 항목에서 액션 시트를 호출하는 방법
- 10. 레일 3 : 액션 폼을 호출하는 방법 Flex
- 11. 메서드 내에서 메서드를 호출하는 올바른 방법
- 12. EJB 메서드를 자체적으로 배포 할 때 EJB 메서드를 호출하는 방법?
- 13. 수퍼 클래스의 수퍼 클래스 메서드를 호출하는 메서드를 재정의하는 방법?
- 14. 반복적으로 메서드를 호출하는 observable을 만듭니다.
- 15. XAML에서 다른 네임 스페이스의 메서드를 호출하는 방법
- 16. 구성 가능한 메서드를 호출하는 가장 좋은 방법
- 17. AppController에서 AppDelegate에서 선언 한 메서드를 호출하는 방법
- 18. JavaScript 객체의 메서드를 동적으로 호출하는 방법
- 19. Java 응용 프로그램에서 웹 메서드를 호출하는 방법?
- 20. 안드로이드에서 라이브러리 외부에서 Activity 메서드를 호출하는 방법
- 21. COM을 통해 Java 메서드를 호출하는 방법
- 22. argparse : 함수 대신 메서드를 호출하는 방법?
- 23. 인스턴스 메서드 내부에서 Shoes 메서드를 호출하는 방법?
- 24. 인스턴스화 된 객체없이 메서드를 호출하는 방법
- 25. Ruby에서 접근 메서드를 동적으로 호출하는 방법
- 26. 리스너의 메서드를 사용하여 getWindow()를 호출하는 방법
- 27. main.m에서 정적 bool 메서드를 호출하는 방법
- 28. iPhone 하위보기에서 부모보기의 메서드를 호출하는 방법
- 29. 유형에 따라 메서드를 호출하는 방법 generic?
- 30. 내 aspx.cs 파일에서 javascript 메서드를 호출하는 방법
이 질문에 동적 태그를 추가 했으므로 .NET 4의 새로운 동적 키워드에 대해 묻고 있습니까? 시도한 코드와 작동하지 않는 코드가 있습니까? 당신이하려는 일의 맥락을 보는 데 도움이 될 수 있습니다. – CoderDennis