2010-06-07 55 views
0

我試圖轉換價格(來自API(代碼如下))。轉換價格

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

我想要做的是將此API的價格與Double進行比較。簡單地嘗試轉換爲Double並不像我希望的那樣工作。

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

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

當我嘗試這樣的事情時,我相信它說價值必須低於無限。

如何將這個價格轉換成可以比較的價格?

+2

什麼是'apiFoo.Value'? – SLaks 2010-06-07 22:19:45

+0

對不起,代碼已更新。 – 2010-06-07 22:27:09

+0

不知何故,直接調用GetOrder似乎比經歷反射更爲明智......如果因爲它是私人的而無法訪問它,那麼你根本不應該觸摸它。 – Joren 2010-06-07 22:42:34

回答

1

Convert.ToDouble不能神奇地將Price對象轉換爲雙精度值,除非Price執行IConvertible

1

您需要在您的價格對象中返回double並對其進行比較的屬性。

0

您可以使用隱式運算符將其轉換爲double。這是根據MSDN for "implicit" operator in C#

E.g.

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>然後使用CompareTo代替和/或another operator overload