문제

반사를 사용하여 MethodInfo를 얻으려면 반환 된 유형이 system.void의 타입인지 테스트하고 싶습니다.

시스템 인 경우 테스트 INT32가 잘 작동합니다

 myMethodInfo.ReturnType == typeof(System.Int32)

하지만

 myMethodInfo.ReturnType == typeof(System.Void)

컴파일하지 않습니까? 현재 이름의 문자열 표현이 "System.Void"인 경우 현재 IM 테스트.

도움이 되었습니까?

해결책

당신은 사용할 수 없습니다 System.Void 직접적이지만 사용하여 액세스 할 수 있습니다 typeof(void).

몇몇 사람들은 지적합니다 (여기 그리고 의견에서 여기 예를 들어) 그 이유는 ECMA 표준 335, 파티 II, 섹션 9.4의 말 :

다음 종류의 유형은 인스턴스베이션 (일반 유형 또는 방법)의 인수로 사용할 수 없습니다.

  • BYREF 유형 (예 : System.Generic.Collection.List 1<string&>유효하지 않다)
  • CIL 평가 스택을 가리킬 수있는 필드를 포함하는 값 유형 (예 :List<System.RuntimeArgumentHandle>)
  • void (예 : List<System.Void> 유효하지 않다)

다른 팁

이것을 만들 때 오류가 발생합니다.

c#에서 system.void를 사용할 수 없습니다 - typeof (void)를 사용하여 void type 객체를 얻습니다.

그게 대답 인 것 같네요 ...

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