다음을 사용하여 일반 메서드를 호출하려고 합니다. 런타임까지 알려지지 않은 유형 인수. 예를 들어, 인터페이스 목록이 있고 각 인터페이스에 대해 일반 메서드를 호출하려고 합니다.
컴파일 시 유형 인수를 알 수 없기 때문입니다. 시간이 지나면 제네릭과 함께 전통적인 메서드 호출을 사용할 수 없습니다. 대신, 리플렉션을 사용하여 런타임에 얻은 형식 인수를 기반으로 일반 메서드를 동적으로 호출해야 합니다.
이 접근 방식을 구현하는 방법은 다음과 같습니다.
// Original Method public void Method<T>() { // Method body } // Main Method var assembly = Assembly.GetExecutingAssembly(); var interfaces = assembly.GetTypes().Where(t => t.Namespace == "MyNamespace.Interfaces"); foreach (var interfaceType in interfaces) { MethodInfo genericMethod = typeof(Test).GetMethod("Method"); MethodInfo specificMethod = genericMethod.MakeGenericMethod(interfaceType); specificMethod.Invoke(null, null); // No arguments for this example }
리플렉션을 활용하면 이 접근 방식을 통해 런타임 시 알 수 없는 유형 인수를 사용하여 일반 메서드를 동적으로 호출할 수 있습니다.
위 내용은 런타임에 결정된 형식 인수를 사용하여 일반 메서드를 호출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!