2009-05-15 3 views
2

나는 토끼 구멍이 내려간 것 같습니다. ADO .NET 데이터 집합의 데이터를 Nullable 형식으로 변환하고 싶습니다. 처음에는 스트레이트 캐스트 (int?)를 사용한다고 가정했습니다. 얼마나 순진한가. 틀린, 틀리게 틀린. 이제 일반 변환기를 작성하려고하지만 구문에 매달리게됩니다. 2005 년입니다. 누군가가 이미이 문제를 해결 했어야합니다. 너?ADO.NET 광기와 Nullable 유형

public class NullableDBConversion 
{ 
    public static T Convert<T>(object testValue) where T : Nullable<T> 
    { 
    if (testValue is DBNull) 
    { 
     return new Nullable<T>(); 
    } 

    return new Nullable<T>((T)testValue); 
    } 
} 

목표는 모든 변환을 수행하는 제네릭을 사용하여 하나의 방법이있다 : (가) 전화를 끊고

내가 구문 오류 컨버터에 제약에 같은 nullable 형식을 사용하려고 할 때이다. 이것이 가능합니까 아니면 몇 가지를 써야합니까?

답변

7

T : Nullable<T> 실제로 제약 조건으로 이해가되지 않습니다 - 무엇에 대해서 생각해보십시오 T; 그 자체는 nullable이 될 수 없다. 당신은 가질 수 :

where T : Nullable<U> where U : struct 

하지만 다소 어둡습니다. T을 null이 아닌 유형으로 지정하는 것이 더 쉽고 Nullable<T>을 참조하기가 더 쉽다고 생각합니다. 나는 당신이 이것을 원한다고 생각한다 :