main
 1using gorilla.utility;
 2
 3namespace solidware.financials.service.domain.accounting
 4{
 5    public class Currency : SimpleUnitOfMeasure
 6    {
 7        static public readonly Currency USD = new Currency("USD");
 8        static public readonly Currency CAD = new Currency("CAD");
 9
10        Currency(string pneumonic)
11        {
12            this.pneumonic = pneumonic;
13        }
14
15        public override string pretty_print(decimal amount)
16        {
17            return "{0:C} {1}".format(amount, this);
18        }
19
20        public bool Equals(Currency other)
21        {
22            if (ReferenceEquals(null, other)) return false;
23            if (ReferenceEquals(this, other)) return true;
24            return Equals(other.pneumonic, pneumonic);
25        }
26
27        public override bool Equals(object obj)
28        {
29            if (ReferenceEquals(null, obj)) return false;
30            if (ReferenceEquals(this, obj)) return true;
31            if (obj.GetType() != typeof (Currency)) return false;
32            return Equals((Currency) obj);
33        }
34
35        public override int GetHashCode()
36        {
37            return (pneumonic != null ? pneumonic.GetHashCode() : 0);
38        }
39
40        static public bool operator ==(Currency left, Currency right)
41        {
42            return Equals(left, right);
43        }
44
45        static public bool operator !=(Currency left, Currency right)
46        {
47            return !Equals(left, right);
48        }
49
50        public override string ToString()
51        {
52            return pneumonic;
53        }
54
55        string pneumonic;
56    }
57}