2010-06-07 3 views
0

Im (API (아래 코드)에서) 가격 변환을 시도합니다.가격에서 변환

public class Price 
{ 
    public Price(); 
    public Price(double data); 
    public Price(double data, int decimalPadding); 
} 

내가 원하는 것은이 API의 가격과 Double을 비교하는 것입니다. 단순히 내가 바라는대로 작동하는 Double isnt로 변환하려고합니다.

Double bar = 21.75; 
Price price = new Price(); 

if (Convert.ToDouble(price) >= bar) { 
//code 
} 

이와 비슷한 것을 시도 할 때 값이 무한대보다 낮아야합니다.

어떻게 비교할 수 있도록이 가격을 변환 할 수 있습니까?

+2

무엇이'apiFoo.Value'입니까? – SLaks

+0

죄송합니다. 코드가 업데이트되었습니다. –

+0

어쨌든 pOrder를 직접 호출하면 리플렉션을 통과하는 것보다 합리적인 것처럼 보입니다 ... 비공개이기 때문에 액세스 할 수 없다면 전혀 건드리지 않아야합니다. – Joren

답변

1

Convert.ToDoublePriceIConvertible을 구현하지 않는 한 Price 개체를 마술로 변환 할 수 없습니다.

1

가격 객체에 double을 반환하고이를 비교하는 속성이 필요합니다.

0

암시 적 연산자을 사용하여 double로 변환 할 수 있습니다. 이것은 MSDN for "implicit" operator in C#에 따른 것입니다.

예.

class Price 
{ 
    public static implicit operator double (Price d) 
    { 
     return d.data; 
    } 
    public static implicit operator Price (double d) 
    { 
     return new Price(d); 
    } 
} 

또는 당신의 비교를 위해, 당신의 가격 클래스에 IComparable<double>IEquatable<double>을 구현하는 대신 및/또는 another operator overloadCompareTo를 사용합니다.