2013-02-05 3 views
0

에 형식을 변환 나는이 사례 유형에서 코드는 널 (NULL) 해당

NullableConverter nullableConverter = new NullableConverter(type); 
Type baseType = nullableConverter.UnderlyingType; 
Object value = Convert.ChangeType(rule.Data, baseType); 
constant = Expression.Constant(value); 

의이 비트가 decimal?입니다 있지만 그것은 어떤 nullable 형식이 될 수 있습니다.

valuedecimal?이어야하며 현재는 decimal이 아닙니다. 문제는 nullable 형식과 함께 Convert.ChangeType이 제대로 작동하지 않는다는 것입니다. 그래서 나는 nullable이 아닌 first를 만들고있다.

rule.Data에 포함 된 문자열을 type으로 변환하려면 어떻게해야합니까?

+0

질문이 명확하지 않습니다. '문자열 '을'십진법'으로 변환하는 방법을 묻고 있습니까? –

+1

바르를 제거 할 수 있습니까? 이것은 관련된 유형을보다 분명하게 만듭니다. – thecoop

+0

유형을 모르지만 모두 일반적인 것입니다. 변경된 vars는 도움이되지 않습니다. 이 경우,'type'은'decimal? '이고,'rule.Data'는 문자열입니다. – CaffGeek

답변

0

수 없습니다.

nullable 구조체가 Object에 boxed되어있을 때 boxed nullable struct가 저장되지 않습니다. 구조체에 값이 없으면 상자에 null을 입력하고 값이 있으면 nullable 구조체의 기본 값을 상자에 넣습니다.

이 경우에도 가능하려면 상자에 넣지 않아도됩니다.

+0

객체로 저장할 필요가 없으므로'rule.Data'을'type' (Nullable <> 유형)으로 변환해야합니다. 나는 그것을 어떻게 관리하는지별로 신경 쓰지 않는다. – CaffGeek

+0

@CaffGeek 글쎄, 당신은'Expression.Constant'에 ​​객체를 전달합니다. 그래서 당신이 무엇을 하든지, 그 시점에서 박스에 넣을 수 있습니다. – Servy

+0

이 내 문제로 보입니다. 10 진수 일지라도 내 코드가 나중에 '십진수'일 때와 같은 오류로 실패합니다. – CaffGeek