VanDalkvist
3/19/2015 - 7:15 AM

Languages object

Languages object

public class Languages
{
    public static readonly Languages Ru = new Languages("ru");
    public static readonly Languages En = new Languages("en");

    private Languages(string lang)
    {
        Name = lang;
    }

    public string Name { get; private set; }

    public static readonly List<Languages> All = new List<Languages> { Ru, En };

    public static implicit operator Languages(string lang)
    {
        var result = All.FirstOrDefault(l => string.Equals(l.Name, lang, StringComparison.OrdinalIgnoreCase));

        if (result == null)
            throw new ApplicationException(string.Format("Language '{0}' is not supported", lang));

        return result;
    }

    public static implicit operator string(Languages lang)
    {
        return lang.Name;
    }

    public static bool TryParse(string name, out Languages value)
    {
        value = All.FirstOrDefault(languages => languages.Name.Equals(name, StringComparison.InvariantCultureIgnoreCase));

        return value != null;
    }

    public override string ToString()
    {
        return Name;
    }
}