2015-01-05 6 views
2

내가 같은 박스 값을 가질 때 :유형을 주어진 유형으로 변경할 수 있습니까?

object input = 31.33M; 

나는이 방법 컨버터블 형태로 변환 할 수 있습니다 :

public static T ToType<T>(object value) 
{ 
    return (T) Convert.ChangeType(value,typeof (T)); 
} 

그래서 모두 :

Console.WriteLine (ToType<double>(input)); 
Console.WriteLine (ToType<decimal>(input)); 

를 반환합니다
31.33 //as double 
31.33 //as decimal 

(정밀도 문제는 제쳐두 자.)

오케이.

하지만 지금은 나는 주어진 유형이 상황 (나는 방법 설명 및 인수 유형을 노출 WebAPI를 사용하고 있습니다) 에 직면하고있다.

그래서 지금은이 :

Type SomeoneSaysMyTypeIs=typeof(decimal) 

하지만 지금 수 없습니다 사용 제네릭 형식 인수를.

질문

내가 일하는 내 방법을 향상시킬 수있는 방법 : if's의 많은 (의사 코드)

ToType(SomeoneSaysMyTypeIs,input); //return type :decimal , not object 

내가 찾은 솔루션하지만를 ...

답변

8

질문을 올바르게 이해하지 못했을 수 있습니다. 그녀의 방법 : 직접 Convert.ChangeType를 호출하는 것과 똑같이 볼과 같습니다

public static object ToType(object value, Type t) 
{ 
    return Convert.ChangeType(value, t); 
} 

:

Convert.ChangeType(value, t); 
+0

를 그냥 추가, 당신은 분명이'object'를 반환하기 때문에 필요한 제네릭 형식'T '알 수 없습니다 - 당신은 단지'Type' 타입의 변수를 가지고 있습니다 – Rhumborl

+0

@Rhumborl : 그것은 불가능합니다, 그렇게 할 수있는 감각을 가지지 않습니다 :). –

+0

번. 개체가 아닌 십진수 반환 형식이어야합니다! –

관련 문제