문제

myMethod 메소드와 관련된 MethodInfo가 있다고 가정해 보겠습니다.

void myMethod(int param1, int param2) { }

메소드의 시그니처를 나타내는 문자열을 생성하려고 합니다.

string myString = "myMethod (int, int)";

MethodInfo 매개 변수를 반복하면서 매개 변수 유형의 ToString 메서드를 호출하여 이러한 결과를 얻을 수 있었습니다.

"myMethod (System.Int32, System.Int32)"

이 문제를 어떻게 개선하고 위에 표시된 결과를 생성할 수 있습니까?

도움이 되었습니까?

해결책

이 질문은 이전에 묻는 메시지가 표시되며 코드 도어 API를 통해 수행 할 수 있습니다.이러한 키워드 (int, bool)는 언어 특정이므로 일반 .NET 소비자 에게이 작업을 출력하는 경우 프레임 워크 유형 이름이 일반적으로 선호됩니다.

다른 팁

내가 아는 한, 진짜 기본 요소의 유형 이름(System.Int32)을 내장 별칭(int).이러한 별칭의 수가 매우 적기 때문에 자신만의 메서드를 작성하는 것이 그리 어렵지 않습니다.

public static string GetTypeName(Type type) 
{
    if (type == typeof(int))  // Or "type == typeof(System.Int32)" -- same either way
        return "int";
    else if (type == typeof(long))
        return "long";
    ...
    else
        return type.Name;     // Or "type.FullName" -- not sure if you want the namespace
}

즉, 사용자가 실제로 했다 입력하다 System.Int32 오히려 int (물론 완벽하게 합법적입니다) 이 기술은 여전히 ​​"int"를 인쇄합니다.그것에 대해 당신이 할 수 있는 일은 많지 않습니다. System.Type 어느 쪽이든 동일합니다. 따라서 사용자가 실제로 어떤 변형을 입력했는지 알아낼 수 있는 방법이 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top