리플렉션을 통해 정적 C# 메서드에 동적으로 액세스 및 호출
문자열(예: "MyClass")로 저장된 클래스 이름이 있고 해당 정적 메서드 중 하나를 호출해야 한다고 가정해 보세요. 리플렉션은 이러한 동적 동작을 달성하기 위한 메커니즘을 제공합니다. 이 가이드에서는 리플렉션을 사용하여 문자열 이름에서 클래스 참조를 검색한 후 정적 메서드를 호출하는 방법을 보여줍니다.
클래스 검색을 위해 Type.GetType 사용
Type.GetType
메소드는 클래스에 동적으로 액세스하는 열쇠입니다. 정규화된 클래스 이름을 문자열로 사용하고 해당 클래스를 나타내는 Type
객체를 반환합니다.
<code class="language-csharp">Type classType = Type.GetType("MyClass"); </code>
리플렉션을 사용한 메서드 호출
Type
객체가 있으면 GetMethod
을 사용하여 호출하려는 정적 메서드를 나타내는 MethodInfo
객체를 얻을 수 있습니다.
<code class="language-csharp">MethodInfo methodInfo = classType.GetMethod("MyStaticMethod", BindingFlags.Static | BindingFlags.Public);</code>
이것은 "MyStaticMethod"라는 메서드를 검색하여 공개 정적 메서드인지 확인합니다. BindingFlags
검색 기준을 지정합니다.
마지막으로 Invoke
:
<code class="language-csharp">methodInfo.Invoke(null, null); // null for static method, null for no parameters</code>
매개변수가 있는 메서드의 경우 개체 배열을 Invoke
의 두 번째 인수로 전달합니다.
중요 고려 사항:
try-catch
블록으로 묶어 잠재적인 예외(예: TypeLoadException
, MethodNotFoundException
)를 처리합니다.BindingFlags
을 조정해야 할 수도 있습니다.이러한 기술을 사용하면 C#에서 동적 메서드 호출의 기능을 활용하여 유연하고 적응 가능한 애플리케이션을 구현할 수 있습니다.
위 내용은 C#에서 리플렉션을 사용하여 이름이 문자열로 지정된 클래스에서 정적 메서드를 호출하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!