Currency object
public class Currency
{
public static readonly Currency Usd = new Currency("usd");
public static readonly Currency Eur = new Currency("eur");
private Currency(string lang)
{
Name = lang;
}
public string Name { get; private set; }
public static readonly List<Currency> All = new List<Currency> { Usd, Eur };
public static implicit operator Currency(string lang)
{
var result = All.FirstOrDefault(l => string.Equals(l.Name, lang, StringComparison.OrdinalIgnoreCase));
if (result == null)
throw new ApplicationException(string.Format("Currency '{0}' is not supported", lang));
return result;
}
public static implicit operator string(Currency lang)
{
return lang.Name;
}
public static bool TryParse(string name, out Currency value)
{
value = All.FirstOrDefault(languages => languages.Name.Equals(name, StringComparison.InvariantCultureIgnoreCase));
return value != null;
}
public override string ToString()
{
return Name;
}
}