2010-05-08 7 views
1

그래, 여전히 nullable 타입을 사용하는 것에 조금 새로운 점이 있습니다.Nullables? 그것들을 감지합니다.

내 프로젝트에 반사 객체 워커를 쓰고 있는데, im은 반사 속성에서 값을 가져온 반사 속성의 값을 설정합니다.

내가 검색 한 값은 아직 object 형식이며, 내 개체 워커가 null을 반환 할 때 뭔가 찾을 수 없기 때문에 (예외를 던지려고 생각했지만 원하는 이것은 무엇인가 잘못되었을 때 소프트 - 실패한다).

어쨌든, 값 설정/가져 오기 중 일부는 decimalbool 등입니다. 그래서 필자는 nullable 값을 설정하지 말아야한다는 것을 알았지 만, 곧바로 어떻게 해야할지 모른다고 깨달았습니다. decimal에서 decimal?

속성 입력 설정의 유형이 ValueType에서 상속되면 키를 누르는 것으로 충분합니까?

+0

나는 당신이 묻는 것을 확실히 말할 수는 없지만,'객체'는 절대로'int '나'decimal?'이 될 수 없다는 것을 알아야한다. 'Nullable <>'에 값이 없으면 그냥 'null'이됩니다. – Gabe

답변

6

다음 코드는 유형이 널인지 아닌지 여부를 알려줍니다 :

private bool IsNullableType(Type theType) 
{ 
    return theType.IsGenericType && 
      theType.GetGenericTypeDefinition().Equals(typeof(Nullable<>)); 
} 
+1

"return Nullable.GetUnderlyingType (theType)! = null;'"은 어떻습니까? http://msdn.microsoft.com/en-us/library/system.nullable.getunderlyingtype.aspx – LukeH

+0

@ 루크 - 그게 효과가 있습니다. – ChrisF

0

MSDN에서 :

nullable 형식은 System.Nullable<T> 구조체의 인스턴스입니다.