MethodInfo.returnType이 System.Void인지 테스트하는 방법?
-
10-07-2019 - |
문제
반사를 사용하여 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 객체를 얻습니다.
그게 대답 인 것 같네요 ...
제휴하지 않습니다 StackOverflow