// Attention : ce fichier a été automatiquement généré par un
// template T4. Toute modification manuelle sera écrasée !!!
using System;
using System.Text.RegularExpressions;
namespace Developpez.Dotnet.Measures
{
///
/// Représente une mesure de masse
///
public interface IMass
{
///
/// Obtient la valeur de cette masse en kilogrammes
///
double ValueInKilograms { get; }
}
///
/// Représente une masse en kilogrammes
///
public struct Kilogram : IMass, IComparable, IEquatable, IFormattable
{
private readonly double _value;
///
/// Initialise une nouvelle instance de la structure .
///
/// La valeur de cette masse en kilogrammes
public Kilogram(double value)
{
_value = value;
}
///
/// Obtient la valeur de cette masse.
///
///
/// La valeur de cette masse en kilogrammes
///
public double Value
{
get { return _value; }
}
#region Operators
///
/// Effectue une conversion implicite de vers .
///
/// Valeur en kilogrammes.
///
/// Résultat de la conversion.
///
public static implicit operator Kilogram(double value)
{
return new Kilogram(value);
}
///
/// Effectue une conversion explicite de vers .
///
/// Masse
///
/// Résultat de la conversion.
///
public static explicit operator double(Kilogram mass)
{
return mass.Value;
}
///
/// Teste l'égalité de deux masses.
///
/// Première masse
/// Deuxième masse
///
/// true si les deux masses sont égales, false sinon.
///
public static bool operator ==(Kilogram a, Kilogram b)
{
return a.Equals(b);
}
///
/// Teste la non-égalité de deux masses.
///
/// Première masse
/// Deuxième masse
///
/// true si les deux masses sont différentes, false sinon.
///
public static bool operator !=(Kilogram a, Kilogram b)
{
return !(a == b);
}
///
/// Teste si la première masse est inférieure à la deuxième.
///
/// Première masse
/// Deuxième masse
///
/// true si la première masse est inférieure à la deuxième, false sinon.
///
public static bool operator <(Kilogram a, Kilogram b)
{
return a.CompareTo(b) < 0;
}
///
/// Teste si la première masse est supérieure à la deuxième.
///
/// Première masse
/// Deuxième masse
///
/// true si la première masse est supérieure à la deuxième, false sinon.
///
public static bool operator >(Kilogram a, Kilogram b)
{
return a.CompareTo(b) > 0;
}
///
/// Teste si la première masse est inférieure ou égale à la deuxième.
///
/// Première masse
/// Deuxième masse
///
/// true si la première masse est inférieure ou égale à la deuxième, false sinon.
///
public static bool operator <=(Kilogram a, Kilogram b)
{
return a.CompareTo(b) <= 0;
}
///
/// Teste si la première masse est supérieure ou égale à la deuxième.
///
/// Première masse
/// Deuxième masse
///
/// true si la première masse est supérieure ou égale à la deuxième, false sinon.
///
public static bool operator >=(Kilogram a, Kilogram b)
{
return a.CompareTo(b) >= 0;
}
///
/// Additionne deux masses.
///
/// Première masse
/// Deuxième masse
///
/// La somme des deux masses.
///
public static Kilogram operator +(Kilogram a, Kilogram b)
{
return new Kilogram(a.Value + b.Value);
}
///
/// Soustrait la deuxième masse de la première
///
/// Première masse
/// Deuxième masse
///
/// La différence entre les deux masses.
///
public static Kilogram operator -(Kilogram a, Kilogram b)
{
return new Kilogram(a.Value - b.Value);
}
///
/// Multiplie une masse par un nombre.
///
/// Masse
/// Multiplicateur
///
/// Le résultat de la multiplication.
///
public static Kilogram operator *(Kilogram mass, double multiplier)
{
return new Kilogram(mass.Value*multiplier);
}
///
/// Divise une masse par un nombre.
///
/// Masse
/// Diviseur
///
/// Le résultat de la division.
///
public static Kilogram operator /(Kilogram mass, double divisor)
{
return new Kilogram(mass.Value/divisor);
}
#endregion
#region Methods
///
/// Compare cette instance avec un objet du même type.
///
/// Objet à comparer avec cette instance.
/// Nombre signé indiquant les valeurs relatives de cette instance et other
///
///
/// Valeur de retour
/// Description
///
/// -
/// Inférieure à zéro
/// Cette instance est inférieure à other.
///
/// -
/// Zéro
/// Cette instance est égale à other.
///
/// -
/// Supérieure à zéro
/// Cette instance est supérieure à other.
///
///
///
public int CompareTo(Kilogram other)
{
return Value.CompareTo(other.Value);
}
///
/// Retourne une représentation textuelle de l'instance actuelle
///
/// une représentation textuelle de l'instance actuelle
public override string ToString()
{
return ToString(null, null);
}
///
/// Retourne une représentation textuelle de l'instance actuelle
///
/// Le format à utiliser
/// une représentation textuelle de l'instance actuelle
public string ToString(string format)
{
return ToString(format, null);
}
///
/// Retourne une représentation textuelle de l'instance actuelle
///
/// Le format à utiliser
/// Le fournisseur à utiliser pour formater la valeur
/// une représentation textuelle de l'instance actuelle
public string ToString(string format, IFormatProvider formatProvider)
{
var value = Value.ToString(format, formatProvider);
return string.Format("{0} kg", value);
}
///
/// Essaye de parser le texte.
///
/// Texte à parser.
/// Masse.
/// true, si le parsing est réussi; sinon false.
public static bool TryParse(string text, out Kilogram mass)
{
var regex = new Regex(@"(?.*) ?kg");
if (regex.IsMatch(text) && regex.Match(text).Groups["value"].Success)
{
string valueText = regex.Match(text).Groups["value"].Value;
double value;
if (double.TryParse(valueText, out value))
{
mass = new Kilogram(value);
return true;
}
}
mass = new Kilogram(0);
return false;
}
///
/// Indique si l'instance courante de l'objet est égal à un autre objet du même type.
///
/// Objet à comparer avec cette instance.
///
/// true si l'instance courante est égale au paramètre ; sinon, false.
///
public bool Equals(Kilogram other)
{
return Value.Equals(other.Value);
}
///
/// Determine si l' spécifié est égal à l'instance courante.
///
/// L' à comparer avec l'instance courante.
///
/// true si l' spécifié est égal à cette instance ; sinon, false.
///
public override bool Equals(object obj)
{
if (obj is Kilogram)
return Equals((Kilogram) obj);
return false;
}
///
/// Retourne le hash code de cette instance
///
///
/// Code de hashage de l'instance actuelle.
///
public override int GetHashCode()
{
unchecked
{
return Value.GetHashCode();
}
}
#endregion
#region Implementation of IMass
///
/// Obtient la valeur de cette masse en kilogrammes
///
double IMass.ValueInKilograms
{
get { return _value; }
}
#endregion
}
///
/// Représente une masse en livres
///
public struct Pound : IMass, IComparable, IEquatable, IFormattable
{
private readonly double _value;
///
/// Initialise une nouvelle instance de la structure .
///
/// La valeur de cette masse en livres
public Pound(double value)
{
_value = value;
}
///
/// Obtient la valeur de cette masse.
///
///
/// La valeur de cette masse en livres
///
public double Value
{
get { return _value; }
}
#region Operators
///
/// Effectue une conversion implicite de vers .
///
/// Valeur en livres.
///
/// Résultat de la conversion.
///
public static implicit operator Pound(double value)
{
return new Pound(value);
}
///
/// Effectue une conversion explicite de vers .
///
/// Masse
///
/// Résultat de la conversion.
///
public static explicit operator double(Pound mass)
{
return mass.Value;
}
///
/// Teste l'égalité de deux masses.
///
/// Première masse
/// Deuxième masse
///
/// true si les deux masses sont égales, false sinon.
///
public static bool operator ==(Pound a, Pound b)
{
return a.Equals(b);
}
///
/// Teste la non-égalité de deux masses.
///
/// Première masse
/// Deuxième masse
///
/// true si les deux masses sont différentes, false sinon.
///
public static bool operator !=(Pound a, Pound b)
{
return !(a == b);
}
///
/// Teste si la première masse est inférieure à la deuxième.
///
/// Première masse
/// Deuxième masse
///
/// true si la première masse est inférieure à la deuxième, false sinon.
///
public static bool operator <(Pound a, Pound b)
{
return a.CompareTo(b) < 0;
}
///
/// Teste si la première masse est supérieure à la deuxième.
///
/// Première masse
/// Deuxième masse
///
/// true si la première masse est supérieure à la deuxième, false sinon.
///
public static bool operator >(Pound a, Pound b)
{
return a.CompareTo(b) > 0;
}
///
/// Teste si la première masse est inférieure ou égale à la deuxième.
///
/// Première masse
/// Deuxième masse
///
/// true si la première masse est inférieure ou égale à la deuxième, false sinon.
///
public static bool operator <=(Pound a, Pound b)
{
return a.CompareTo(b) <= 0;
}
///
/// Teste si la première masse est supérieure ou égale à la deuxième.
///
/// Première masse
/// Deuxième masse
///
/// true si la première masse est supérieure ou égale à la deuxième, false sinon.
///
public static bool operator >=(Pound a, Pound b)
{
return a.CompareTo(b) >= 0;
}
///
/// Additionne deux masses.
///
/// Première masse
/// Deuxième masse
///
/// La somme des deux masses.
///
public static Pound operator +(Pound a, Pound b)
{
return new Pound(a.Value + b.Value);
}
///
/// Soustrait la deuxième masse de la première
///
/// Première masse
/// Deuxième masse
///
/// La différence entre les deux masses.
///
public static Pound operator -(Pound a, Pound b)
{
return new Pound(a.Value - b.Value);
}
///
/// Multiplie une masse par un nombre.
///
/// Masse
/// Multiplicateur
///
/// Le résultat de la multiplication.
///
public static Pound operator *(Pound mass, double multiplier)
{
return new Pound(mass.Value*multiplier);
}
///
/// Divise une masse par un nombre.
///
/// Masse
/// Diviseur
///
/// Le résultat de la division.
///
public static Pound operator /(Pound mass, double divisor)
{
return new Pound(mass.Value/divisor);
}
#endregion
#region Methods
///
/// Compare cette instance avec un objet du même type.
///
/// Objet à comparer avec cette instance.
/// Nombre signé indiquant les valeurs relatives de cette instance et other
///
///
/// Valeur de retour
/// Description
///
/// -
/// Inférieure à zéro
/// Cette instance est inférieure à other.
///
/// -
/// Zéro
/// Cette instance est égale à other.
///
/// -
/// Supérieure à zéro
/// Cette instance est supérieure à other.
///
///
///
public int CompareTo(Pound other)
{
return Value.CompareTo(other.Value);
}
///
/// Retourne une représentation textuelle de l'instance actuelle
///
/// une représentation textuelle de l'instance actuelle
public override string ToString()
{
return ToString(null, null);
}
///
/// Retourne une représentation textuelle de l'instance actuelle
///
/// Le format à utiliser
/// une représentation textuelle de l'instance actuelle
public string ToString(string format)
{
return ToString(format, null);
}
///
/// Retourne une représentation textuelle de l'instance actuelle
///
/// Le format à utiliser
/// Le fournisseur à utiliser pour formater la valeur
/// une représentation textuelle de l'instance actuelle
public string ToString(string format, IFormatProvider formatProvider)
{
var value = Value.ToString(format, formatProvider);
return string.Format("{0} lb", value);
}
///
/// Essaye de parser le texte.
///
/// Texte à parser.
/// Masse.
/// true, si le parsing est réussi; sinon false.
public static bool TryParse(string text, out Pound mass)
{
var regex = new Regex(@"(?.*) ?lb");
if (regex.IsMatch(text) && regex.Match(text).Groups["value"].Success)
{
string valueText = regex.Match(text).Groups["value"].Value;
double value;
if (double.TryParse(valueText, out value))
{
mass = new Pound(value);
return true;
}
}
mass = new Pound(0);
return false;
}
///
/// Indique si l'instance courante de l'objet est égal à un autre objet du même type.
///
/// Objet à comparer avec cette instance.
///
/// true si l'instance courante est égale au paramètre ; sinon, false.
///
public bool Equals(Pound other)
{
return Value.Equals(other.Value);
}
///
/// Determine si l' spécifié est égal à l'instance courante.
///
/// L' à comparer avec l'instance courante.
///
/// true si l' spécifié est égal à cette instance ; sinon, false.
///
public override bool Equals(object obj)
{
if (obj is Pound)
return Equals((Pound) obj);
return false;
}
///
/// Retourne le hash code de cette instance
///
///
/// Code de hashage de l'instance actuelle.
///
public override int GetHashCode()
{
unchecked
{
return Value.GetHashCode();
}
}
#endregion
#region Implementation of IMass
///
/// Obtient la valeur de cette masse en kilogrammes
///
double IMass.ValueInKilograms
{
get { return _value * .45359237; }
}
#endregion
}
///
/// Représente une masse en onces
///
public struct Ounce : IMass, IComparable, IEquatable, IFormattable
{
private readonly double _value;
///
/// Initialise une nouvelle instance de la structure .
///
/// La valeur de cette masse en onces
public Ounce(double value)
{
_value = value;
}
///
/// Obtient la valeur de cette masse.
///
///
/// La valeur de cette masse en onces
///
public double Value
{
get { return _value; }
}
#region Operators
///
/// Effectue une conversion implicite de vers .
///
/// Valeur en onces.
///
/// Résultat de la conversion.
///
public static implicit operator Ounce(double value)
{
return new Ounce(value);
}
///
/// Effectue une conversion explicite de vers .
///
/// Masse
///
/// Résultat de la conversion.
///
public static explicit operator double(Ounce mass)
{
return mass.Value;
}
///
/// Teste l'égalité de deux masses.
///
/// Première masse
/// Deuxième masse
///
/// true si les deux masses sont égales, false sinon.
///
public static bool operator ==(Ounce a, Ounce b)
{
return a.Equals(b);
}
///
/// Teste la non-égalité de deux masses.
///
/// Première masse
/// Deuxième masse
///
/// true si les deux masses sont différentes, false sinon.
///
public static bool operator !=(Ounce a, Ounce b)
{
return !(a == b);
}
///
/// Teste si la première masse est inférieure à la deuxième.
///
/// Première masse
/// Deuxième masse
///
/// true si la première masse est inférieure à la deuxième, false sinon.
///
public static bool operator <(Ounce a, Ounce b)
{
return a.CompareTo(b) < 0;
}
///
/// Teste si la première masse est supérieure à la deuxième.
///
/// Première masse
/// Deuxième masse
///
/// true si la première masse est supérieure à la deuxième, false sinon.
///
public static bool operator >(Ounce a, Ounce b)
{
return a.CompareTo(b) > 0;
}
///
/// Teste si la première masse est inférieure ou égale à la deuxième.
///
/// Première masse
/// Deuxième masse
///
/// true si la première masse est inférieure ou égale à la deuxième, false sinon.
///
public static bool operator <=(Ounce a, Ounce b)
{
return a.CompareTo(b) <= 0;
}
///
/// Teste si la première masse est supérieure ou égale à la deuxième.
///
/// Première masse
/// Deuxième masse
///
/// true si la première masse est supérieure ou égale à la deuxième, false sinon.
///
public static bool operator >=(Ounce a, Ounce b)
{
return a.CompareTo(b) >= 0;
}
///
/// Additionne deux masses.
///
/// Première masse
/// Deuxième masse
///
/// La somme des deux masses.
///
public static Ounce operator +(Ounce a, Ounce b)
{
return new Ounce(a.Value + b.Value);
}
///
/// Soustrait la deuxième masse de la première
///
/// Première masse
/// Deuxième masse
///
/// La différence entre les deux masses.
///
public static Ounce operator -(Ounce a, Ounce b)
{
return new Ounce(a.Value - b.Value);
}
///
/// Multiplie une masse par un nombre.
///
/// Masse
/// Multiplicateur
///
/// Le résultat de la multiplication.
///
public static Ounce operator *(Ounce mass, double multiplier)
{
return new Ounce(mass.Value*multiplier);
}
///
/// Divise une masse par un nombre.
///
/// Masse
/// Diviseur
///
/// Le résultat de la division.
///
public static Ounce operator /(Ounce mass, double divisor)
{
return new Ounce(mass.Value/divisor);
}
#endregion
#region Methods
///
/// Compare cette instance avec un objet du même type.
///
/// Objet à comparer avec cette instance.
/// Nombre signé indiquant les valeurs relatives de cette instance et other
///
///
/// Valeur de retour
/// Description
///
/// -
/// Inférieure à zéro
/// Cette instance est inférieure à other.
///
/// -
/// Zéro
/// Cette instance est égale à other.
///
/// -
/// Supérieure à zéro
/// Cette instance est supérieure à other.
///
///
///
public int CompareTo(Ounce other)
{
return Value.CompareTo(other.Value);
}
///
/// Retourne une représentation textuelle de l'instance actuelle
///
/// une représentation textuelle de l'instance actuelle
public override string ToString()
{
return ToString(null, null);
}
///
/// Retourne une représentation textuelle de l'instance actuelle
///
/// Le format à utiliser
/// une représentation textuelle de l'instance actuelle
public string ToString(string format)
{
return ToString(format, null);
}
///
/// Retourne une représentation textuelle de l'instance actuelle
///
/// Le format à utiliser
/// Le fournisseur à utiliser pour formater la valeur
/// une représentation textuelle de l'instance actuelle
public string ToString(string format, IFormatProvider formatProvider)
{
var value = Value.ToString(format, formatProvider);
return string.Format("{0} oz", value);
}
///
/// Essaye de parser le texte.
///
/// Texte à parser.
/// Masse.
/// true, si le parsing est réussi; sinon false.
public static bool TryParse(string text, out Ounce mass)
{
var regex = new Regex(@"(?.*) ?oz");
if (regex.IsMatch(text) && regex.Match(text).Groups["value"].Success)
{
string valueText = regex.Match(text).Groups["value"].Value;
double value;
if (double.TryParse(valueText, out value))
{
mass = new Ounce(value);
return true;
}
}
mass = new Ounce(0);
return false;
}
///
/// Indique si l'instance courante de l'objet est égal à un autre objet du même type.
///
/// Objet à comparer avec cette instance.
///
/// true si l'instance courante est égale au paramètre ; sinon, false.
///
public bool Equals(Ounce other)
{
return Value.Equals(other.Value);
}
///
/// Determine si l' spécifié est égal à l'instance courante.
///
/// L' à comparer avec l'instance courante.
///
/// true si l' spécifié est égal à cette instance ; sinon, false.
///
public override bool Equals(object obj)
{
if (obj is Ounce)
return Equals((Ounce) obj);
return false;
}
///
/// Retourne le hash code de cette instance
///
///
/// Code de hashage de l'instance actuelle.
///
public override int GetHashCode()
{
unchecked
{
return Value.GetHashCode();
}
}
#endregion
#region Implementation of IMass
///
/// Obtient la valeur de cette masse en kilogrammes
///
double IMass.ValueInKilograms
{
get { return _value * .0283495231; }
}
#endregion
}
///
/// Fournit des méthodes d'extension pour les masses
///
public static class MassExtensions
{
///
/// Convertit une masse en kilogrammes
///
/// Le type de l'unité d'origine
/// Masse à convertir
/// Valeur en kilogrammes
public static Kilogram ToKilogram(this T mass)
where T : IMass
{
return mass.ValueInKilograms;
}
///
/// Convertit une masse en livres
///
/// Le type de l'unité d'origine
/// Masse à convertir
/// Valeur en livres
public static Pound ToPound(this T mass)
where T : IMass
{
return mass.ValueInKilograms / .45359237;
}
///
/// Convertit une masse en onces
///
/// Le type de l'unité d'origine
/// Masse à convertir
/// Valeur en onces
public static Ounce ToOunce(this T mass)
where T : IMass
{
return mass.ValueInKilograms / .0283495231;
}
}
}