> 백엔드 개발 > C++ > 리플렉션을 사용하여 C#에서 동적 형식 인수로 일반 메서드를 호출하는 방법은 무엇입니까?

리플렉션을 사용하여 C#에서 동적 형식 인수로 일반 메서드를 호출하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2025-01-03 14:19:40
원래의
685명이 탐색했습니다.

How to Invoke Generic Methods with Dynamic Type Arguments in C# using Reflection?

동적 형식 인수를 사용하여 일반 메서드 호출

C#에서 실행 시에만 알려진 형식 인수를 사용하여 일반 메서드를 호출하려면 리플렉션 기능을 활용해야 합니다. 원래의 문제는 특정 네임스페이스의 인터페이스를 반복하고 이러한 인터페이스를 인수로 사용하여 일반 메서드를 호출하는 것이었습니다.

이를 극복하려면 다음 단계를 따르세요.

  1. 일반 메서드: Type.GetMethod를 사용하여 일반 메서드 정보를 검색합니다.
  2. Make 메소드 일반: MakeGenericMethod를 사용하여 원하는 유형에 대한 일반 메소드의 특수 버전을 생성합니다.
  3. 메서드 호출: 생성된 메소드에 대해 Invoke를 호출하여 실행합니다.

예를 들어 다음을 고려해보세요. 코드:

// Get the generic method
MethodInfo method = typeof(Test).GetMethod("CallMe");

// Get the list of interfaces in the specified namespace
var types = typeof(Test).Assembly
    .GetTypes()
    .Where(t => t.Namespace == "Interfaces");

// Loop through the interfaces
foreach (Type type in types)
{
    // Create a specialized generic method
    MethodInfo genericMethod = method.MakeGenericMethod(type);

    // Invoke the method with no target or arguments
    genericMethod.Invoke(null, null);
}
로그인 후 복사

이 예에서는 "CallMe" 일반 메소드를 검색하고, 각 인터페이스 유형에 대한 특수 버전을 생성하고 이를 반영적으로 호출합니다.

참고: 인터페이스 유형이 다루는 문제가 그 자체로 제네릭인 경우 MakeGenericMethod 대신 MakeGenericType을 사용하여 적절한 유형 인수를 전달하세요.

위 내용은 리플렉션을 사용하여 C#에서 동적 형식 인수로 일반 메서드를 호출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿