// 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 surface
///
public interface IArea
{
///
/// Obtient la valeur de cette longueur en mètres carrés
///
double ValueInSquareMeters { get; }
}
///
/// Représente une surface en mètres carrés
///
public struct SquareMeter : IArea, IComparable, IEquatable, IFormattable
{
private readonly double _value;
///
/// Initialise une nouvelle instance de la structure .
///
/// La valeur de cette surface en mètres carrés
public SquareMeter(double value)
{
_value = value;
}
///
/// Obtient la valeur ce cette surface.
///
///
/// La valeur de cette surface
///
public double Value
{
get { return _value; }
}
#region Operators
///
/// Effectue une conversion implicite de vers .
///
/// Valeur en mètres carrés.
///
/// Résultat de la conversion.
///
public static implicit operator SquareMeter(double value)
{
return new SquareMeter(value);
}
///
/// Effectue une conversion explicite de vers .
///
/// Surface
///
/// Résultat de la conversion.
///
public static explicit operator double(SquareMeter area)
{
return area.Value;
}
///
/// Teste l'égalité de deux surfaces.
///
/// Première surface
/// Deuxième surface
///
/// true si les deux surfaces sont égales, false sinon.
///
public static bool operator ==(SquareMeter a, SquareMeter b)
{
return a.Equals(b);
}
///
/// Teste la non-égalité de deux surfaces.
///
/// Première surface
/// Deuxième surface
///
/// true si les deux surfaces sont différentes, false sinon.
///
public static bool operator !=(SquareMeter a, SquareMeter b)
{
return !(a == b);
}
///
/// Teste si la première surface est inférieure à la deuxième.
///
/// Première surface
/// Deuxième surface
///
/// true si la première surface est inférieure à la deuxième, false sinon.
///
public static bool operator <(SquareMeter a, SquareMeter b)
{
return a.CompareTo(b) < 0;
}
///
/// Teste si la première surface est supérieure à la deuxième.
///
/// Première surface
/// Deuxième surface
///
/// true si la première surface est supérieure à la deuxième, false sinon.
///
public static bool operator >(SquareMeter a, SquareMeter b)
{
return a.CompareTo(b) > 0;
}
///
/// Teste si la première surface est inférieure ou égale à la deuxième.
///
/// Première surface
/// Deuxième surface
///
/// true si la première surface est inférieure ou égale à la deuxième, false sinon.
///
public static bool operator <=(SquareMeter a, SquareMeter b)
{
return a.CompareTo(b) <= 0;
}
///
/// Teste si la première surface est supérieure ou égale à la deuxième.
///
/// Première surface
/// Deuxième surface
///
/// true si la première surface est supérieure ou égale à la deuxième, false sinon.
///
public static bool operator >=(SquareMeter a, SquareMeter b)
{
return a.CompareTo(b) >= 0;
}
///
/// Additionne deux surfaces.
///
/// Première surface
/// Deuxième surface
///
/// La somme des deux surfaces.
///
public static SquareMeter operator +(SquareMeter a, SquareMeter b)
{
return new SquareMeter(a.Value + b.Value);
}
///
/// Soustrait la deuxième surface de la première
///
/// Première surface
/// Deuxième surface
///
/// La différence entre les deux surfaces.
///
public static SquareMeter operator -(SquareMeter a, SquareMeter b)
{
return new SquareMeter(a.Value - b.Value);
}
///
/// Multiplie une surface par un nombre.
///
/// surface
/// Multiplicateur
///
/// Le résultat de la multiplication.
///
public static SquareMeter operator *(SquareMeter area, double multiplier)
{
return new SquareMeter(area.Value*multiplier);
}
///
/// Divise une surface par un nombre.
///
/// surface
/// Diviseur
///
/// Le résultat de la division.
///
public static SquareMeter operator /(SquareMeter area, double divisor)
{
return new SquareMeter(area.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(SquareMeter 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} m²", value);
}
///
/// Essaye de parser le texte.
///
/// Texte à parser.
/// Surface.
/// true, si le parsing est réussi; sinon false.
public static bool TryParse(string text, out SquareMeter area)
{
var regex = new Regex(@"(?.*) ?m²");
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))
{
area = new SquareMeter(value);
return true;
}
}
area = new SquareMeter(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(SquareMeter 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 SquareMeter)
return Equals((SquareMeter) 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 IArea
///
/// Obtient la valeur de cette surface en mètres carrés
///
double IArea.ValueInSquareMeters
{
get { return _value; }
}
#endregion
}
///
/// Représente une surface en pieds carrés
///
public struct SquareFoot : IArea, IComparable, IEquatable, IFormattable
{
private readonly double _value;
///
/// Initialise une nouvelle instance de la structure .
///
/// La valeur de cette surface en pieds carrés
public SquareFoot(double value)
{
_value = value;
}
///
/// Obtient la valeur ce cette surface.
///
///
/// La valeur de cette surface
///
public double Value
{
get { return _value; }
}
#region Operators
///
/// Effectue une conversion implicite de vers .
///
/// Valeur en pieds carrés.
///
/// Résultat de la conversion.
///
public static implicit operator SquareFoot(double value)
{
return new SquareFoot(value);
}
///
/// Effectue une conversion explicite de vers .
///
/// Surface
///
/// Résultat de la conversion.
///
public static explicit operator double(SquareFoot area)
{
return area.Value;
}
///
/// Teste l'égalité de deux surfaces.
///
/// Première surface
/// Deuxième surface
///
/// true si les deux surfaces sont égales, false sinon.
///
public static bool operator ==(SquareFoot a, SquareFoot b)
{
return a.Equals(b);
}
///
/// Teste la non-égalité de deux surfaces.
///
/// Première surface
/// Deuxième surface
///
/// true si les deux surfaces sont différentes, false sinon.
///
public static bool operator !=(SquareFoot a, SquareFoot b)
{
return !(a == b);
}
///
/// Teste si la première surface est inférieure à la deuxième.
///
/// Première surface
/// Deuxième surface
///
/// true si la première surface est inférieure à la deuxième, false sinon.
///
public static bool operator <(SquareFoot a, SquareFoot b)
{
return a.CompareTo(b) < 0;
}
///
/// Teste si la première surface est supérieure à la deuxième.
///
/// Première surface
/// Deuxième surface
///
/// true si la première surface est supérieure à la deuxième, false sinon.
///
public static bool operator >(SquareFoot a, SquareFoot b)
{
return a.CompareTo(b) > 0;
}
///
/// Teste si la première surface est inférieure ou égale à la deuxième.
///
/// Première surface
/// Deuxième surface
///
/// true si la première surface est inférieure ou égale à la deuxième, false sinon.
///
public static bool operator <=(SquareFoot a, SquareFoot b)
{
return a.CompareTo(b) <= 0;
}
///
/// Teste si la première surface est supérieure ou égale à la deuxième.
///
/// Première surface
/// Deuxième surface
///
/// true si la première surface est supérieure ou égale à la deuxième, false sinon.
///
public static bool operator >=(SquareFoot a, SquareFoot b)
{
return a.CompareTo(b) >= 0;
}
///
/// Additionne deux surfaces.
///
/// Première surface
/// Deuxième surface
///
/// La somme des deux surfaces.
///
public static SquareFoot operator +(SquareFoot a, SquareFoot b)
{
return new SquareFoot(a.Value + b.Value);
}
///
/// Soustrait la deuxième surface de la première
///
/// Première surface
/// Deuxième surface
///
/// La différence entre les deux surfaces.
///
public static SquareFoot operator -(SquareFoot a, SquareFoot b)
{
return new SquareFoot(a.Value - b.Value);
}
///
/// Multiplie une surface par un nombre.
///
/// surface
/// Multiplicateur
///
/// Le résultat de la multiplication.
///
public static SquareFoot operator *(SquareFoot area, double multiplier)
{
return new SquareFoot(area.Value*multiplier);
}
///
/// Divise une surface par un nombre.
///
/// surface
/// Diviseur
///
/// Le résultat de la division.
///
public static SquareFoot operator /(SquareFoot area, double divisor)
{
return new SquareFoot(area.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(SquareFoot 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} sq ft", value);
}
///
/// Essaye de parser le texte.
///
/// Texte à parser.
/// Surface.
/// true, si le parsing est réussi; sinon false.
public static bool TryParse(string text, out SquareFoot area)
{
var regex = new Regex(@"(?.*) ?sq ft");
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))
{
area = new SquareFoot(value);
return true;
}
}
area = new SquareFoot(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(SquareFoot 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 SquareFoot)
return Equals((SquareFoot) 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 IArea
///
/// Obtient la valeur de cette surface en mètres carrés
///
double IArea.ValueInSquareMeters
{
get { return _value * .09290304; }
}
#endregion
}
///
/// Représente une surface en pouces carrés
///
public struct SquareInch : IArea, IComparable, IEquatable, IFormattable
{
private readonly double _value;
///
/// Initialise une nouvelle instance de la structure .
///
/// La valeur de cette surface en pouces carrés
public SquareInch(double value)
{
_value = value;
}
///
/// Obtient la valeur ce cette surface.
///
///
/// La valeur de cette surface
///
public double Value
{
get { return _value; }
}
#region Operators
///
/// Effectue une conversion implicite de vers .
///
/// Valeur en pouces carrés.
///
/// Résultat de la conversion.
///
public static implicit operator SquareInch(double value)
{
return new SquareInch(value);
}
///
/// Effectue une conversion explicite de vers .
///
/// Surface
///
/// Résultat de la conversion.
///
public static explicit operator double(SquareInch area)
{
return area.Value;
}
///
/// Teste l'égalité de deux surfaces.
///
/// Première surface
/// Deuxième surface
///
/// true si les deux surfaces sont égales, false sinon.
///
public static bool operator ==(SquareInch a, SquareInch b)
{
return a.Equals(b);
}
///
/// Teste la non-égalité de deux surfaces.
///
/// Première surface
/// Deuxième surface
///
/// true si les deux surfaces sont différentes, false sinon.
///
public static bool operator !=(SquareInch a, SquareInch b)
{
return !(a == b);
}
///
/// Teste si la première surface est inférieure à la deuxième.
///
/// Première surface
/// Deuxième surface
///
/// true si la première surface est inférieure à la deuxième, false sinon.
///
public static bool operator <(SquareInch a, SquareInch b)
{
return a.CompareTo(b) < 0;
}
///
/// Teste si la première surface est supérieure à la deuxième.
///
/// Première surface
/// Deuxième surface
///
/// true si la première surface est supérieure à la deuxième, false sinon.
///
public static bool operator >(SquareInch a, SquareInch b)
{
return a.CompareTo(b) > 0;
}
///
/// Teste si la première surface est inférieure ou égale à la deuxième.
///
/// Première surface
/// Deuxième surface
///
/// true si la première surface est inférieure ou égale à la deuxième, false sinon.
///
public static bool operator <=(SquareInch a, SquareInch b)
{
return a.CompareTo(b) <= 0;
}
///
/// Teste si la première surface est supérieure ou égale à la deuxième.
///
/// Première surface
/// Deuxième surface
///
/// true si la première surface est supérieure ou égale à la deuxième, false sinon.
///
public static bool operator >=(SquareInch a, SquareInch b)
{
return a.CompareTo(b) >= 0;
}
///
/// Additionne deux surfaces.
///
/// Première surface
/// Deuxième surface
///
/// La somme des deux surfaces.
///
public static SquareInch operator +(SquareInch a, SquareInch b)
{
return new SquareInch(a.Value + b.Value);
}
///
/// Soustrait la deuxième surface de la première
///
/// Première surface
/// Deuxième surface
///
/// La différence entre les deux surfaces.
///
public static SquareInch operator -(SquareInch a, SquareInch b)
{
return new SquareInch(a.Value - b.Value);
}
///
/// Multiplie une surface par un nombre.
///
/// surface
/// Multiplicateur
///
/// Le résultat de la multiplication.
///
public static SquareInch operator *(SquareInch area, double multiplier)
{
return new SquareInch(area.Value*multiplier);
}
///
/// Divise une surface par un nombre.
///
/// surface
/// Diviseur
///
/// Le résultat de la division.
///
public static SquareInch operator /(SquareInch area, double divisor)
{
return new SquareInch(area.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(SquareInch 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} sq in", value);
}
///
/// Essaye de parser le texte.
///
/// Texte à parser.
/// Surface.
/// true, si le parsing est réussi; sinon false.
public static bool TryParse(string text, out SquareInch area)
{
var regex = new Regex(@"(?.*) ?sq in");
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))
{
area = new SquareInch(value);
return true;
}
}
area = new SquareInch(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(SquareInch 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 SquareInch)
return Equals((SquareInch) 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 IArea
///
/// Obtient la valeur de cette surface en mètres carrés
///
double IArea.ValueInSquareMeters
{
get { return _value * .00064516; }
}
#endregion
}
///
/// Représente une surface en acres
///
public struct Acre : IArea, IComparable, IEquatable, IFormattable
{
private readonly double _value;
///
/// Initialise une nouvelle instance de la structure .
///
/// La valeur de cette surface en acres
public Acre(double value)
{
_value = value;
}
///
/// Obtient la valeur ce cette surface.
///
///
/// La valeur de cette surface
///
public double Value
{
get { return _value; }
}
#region Operators
///
/// Effectue une conversion implicite de vers .
///
/// Valeur en acres.
///
/// Résultat de la conversion.
///
public static implicit operator Acre(double value)
{
return new Acre(value);
}
///
/// Effectue une conversion explicite de vers .
///
/// Surface
///
/// Résultat de la conversion.
///
public static explicit operator double(Acre area)
{
return area.Value;
}
///
/// Teste l'égalité de deux surfaces.
///
/// Première surface
/// Deuxième surface
///
/// true si les deux surfaces sont égales, false sinon.
///
public static bool operator ==(Acre a, Acre b)
{
return a.Equals(b);
}
///
/// Teste la non-égalité de deux surfaces.
///
/// Première surface
/// Deuxième surface
///
/// true si les deux surfaces sont différentes, false sinon.
///
public static bool operator !=(Acre a, Acre b)
{
return !(a == b);
}
///
/// Teste si la première surface est inférieure à la deuxième.
///
/// Première surface
/// Deuxième surface
///
/// true si la première surface est inférieure à la deuxième, false sinon.
///
public static bool operator <(Acre a, Acre b)
{
return a.CompareTo(b) < 0;
}
///
/// Teste si la première surface est supérieure à la deuxième.
///
/// Première surface
/// Deuxième surface
///
/// true si la première surface est supérieure à la deuxième, false sinon.
///
public static bool operator >(Acre a, Acre b)
{
return a.CompareTo(b) > 0;
}
///
/// Teste si la première surface est inférieure ou égale à la deuxième.
///
/// Première surface
/// Deuxième surface
///
/// true si la première surface est inférieure ou égale à la deuxième, false sinon.
///
public static bool operator <=(Acre a, Acre b)
{
return a.CompareTo(b) <= 0;
}
///
/// Teste si la première surface est supérieure ou égale à la deuxième.
///
/// Première surface
/// Deuxième surface
///
/// true si la première surface est supérieure ou égale à la deuxième, false sinon.
///
public static bool operator >=(Acre a, Acre b)
{
return a.CompareTo(b) >= 0;
}
///
/// Additionne deux surfaces.
///
/// Première surface
/// Deuxième surface
///
/// La somme des deux surfaces.
///
public static Acre operator +(Acre a, Acre b)
{
return new Acre(a.Value + b.Value);
}
///
/// Soustrait la deuxième surface de la première
///
/// Première surface
/// Deuxième surface
///
/// La différence entre les deux surfaces.
///
public static Acre operator -(Acre a, Acre b)
{
return new Acre(a.Value - b.Value);
}
///
/// Multiplie une surface par un nombre.
///
/// surface
/// Multiplicateur
///
/// Le résultat de la multiplication.
///
public static Acre operator *(Acre area, double multiplier)
{
return new Acre(area.Value*multiplier);
}
///
/// Divise une surface par un nombre.
///
/// surface
/// Diviseur
///
/// Le résultat de la division.
///
public static Acre operator /(Acre area, double divisor)
{
return new Acre(area.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(Acre 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} ac", value);
}
///
/// Essaye de parser le texte.
///
/// Texte à parser.
/// Surface.
/// true, si le parsing est réussi; sinon false.
public static bool TryParse(string text, out Acre area)
{
var regex = new Regex(@"(?.*) ?ac");
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))
{
area = new Acre(value);
return true;
}
}
area = new Acre(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(Acre 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 Acre)
return Equals((Acre) 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 IArea
///
/// Obtient la valeur de cette surface en mètres carrés
///
double IArea.ValueInSquareMeters
{
get { return _value * 4046.8564224; }
}
#endregion
}
///
/// Représente une surface en ares
///
public struct Are : IArea, IComparable, IEquatable, IFormattable
{
private readonly double _value;
///
/// Initialise une nouvelle instance de la structure .
///
/// La valeur de cette surface en ares
public Are(double value)
{
_value = value;
}
///
/// Obtient la valeur ce cette surface.
///
///
/// La valeur de cette surface
///
public double Value
{
get { return _value; }
}
#region Operators
///
/// Effectue une conversion implicite de vers .
///
/// Valeur en ares.
///
/// Résultat de la conversion.
///
public static implicit operator Are(double value)
{
return new Are(value);
}
///
/// Effectue une conversion explicite de vers .
///
/// Surface
///
/// Résultat de la conversion.
///
public static explicit operator double(Are area)
{
return area.Value;
}
///
/// Teste l'égalité de deux surfaces.
///
/// Première surface
/// Deuxième surface
///
/// true si les deux surfaces sont égales, false sinon.
///
public static bool operator ==(Are a, Are b)
{
return a.Equals(b);
}
///
/// Teste la non-égalité de deux surfaces.
///
/// Première surface
/// Deuxième surface
///
/// true si les deux surfaces sont différentes, false sinon.
///
public static bool operator !=(Are a, Are b)
{
return !(a == b);
}
///
/// Teste si la première surface est inférieure à la deuxième.
///
/// Première surface
/// Deuxième surface
///
/// true si la première surface est inférieure à la deuxième, false sinon.
///
public static bool operator <(Are a, Are b)
{
return a.CompareTo(b) < 0;
}
///
/// Teste si la première surface est supérieure à la deuxième.
///
/// Première surface
/// Deuxième surface
///
/// true si la première surface est supérieure à la deuxième, false sinon.
///
public static bool operator >(Are a, Are b)
{
return a.CompareTo(b) > 0;
}
///
/// Teste si la première surface est inférieure ou égale à la deuxième.
///
/// Première surface
/// Deuxième surface
///
/// true si la première surface est inférieure ou égale à la deuxième, false sinon.
///
public static bool operator <=(Are a, Are b)
{
return a.CompareTo(b) <= 0;
}
///
/// Teste si la première surface est supérieure ou égale à la deuxième.
///
/// Première surface
/// Deuxième surface
///
/// true si la première surface est supérieure ou égale à la deuxième, false sinon.
///
public static bool operator >=(Are a, Are b)
{
return a.CompareTo(b) >= 0;
}
///
/// Additionne deux surfaces.
///
/// Première surface
/// Deuxième surface
///
/// La somme des deux surfaces.
///
public static Are operator +(Are a, Are b)
{
return new Are(a.Value + b.Value);
}
///
/// Soustrait la deuxième surface de la première
///
/// Première surface
/// Deuxième surface
///
/// La différence entre les deux surfaces.
///
public static Are operator -(Are a, Are b)
{
return new Are(a.Value - b.Value);
}
///
/// Multiplie une surface par un nombre.
///
/// surface
/// Multiplicateur
///
/// Le résultat de la multiplication.
///
public static Are operator *(Are area, double multiplier)
{
return new Are(area.Value*multiplier);
}
///
/// Divise une surface par un nombre.
///
/// surface
/// Diviseur
///
/// Le résultat de la division.
///
public static Are operator /(Are area, double divisor)
{
return new Are(area.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(Are 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} a", value);
}
///
/// Essaye de parser le texte.
///
/// Texte à parser.
/// Surface.
/// true, si le parsing est réussi; sinon false.
public static bool TryParse(string text, out Are area)
{
var regex = new Regex(@"(?.*) ?a");
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))
{
area = new Are(value);
return true;
}
}
area = new Are(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(Are 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 Are)
return Equals((Are) 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 IArea
///
/// Obtient la valeur de cette surface en mètres carrés
///
double IArea.ValueInSquareMeters
{
get { return _value * 100; }
}
#endregion
}
///
/// Représente une surface en hectares
///
public struct Hectare : IArea, IComparable, IEquatable, IFormattable
{
private readonly double _value;
///
/// Initialise une nouvelle instance de la structure .
///
/// La valeur de cette surface en hectares
public Hectare(double value)
{
_value = value;
}
///
/// Obtient la valeur ce cette surface.
///
///
/// La valeur de cette surface
///
public double Value
{
get { return _value; }
}
#region Operators
///
/// Effectue une conversion implicite de vers .
///
/// Valeur en hectares.
///
/// Résultat de la conversion.
///
public static implicit operator Hectare(double value)
{
return new Hectare(value);
}
///
/// Effectue une conversion explicite de vers .
///
/// Surface
///
/// Résultat de la conversion.
///
public static explicit operator double(Hectare area)
{
return area.Value;
}
///
/// Teste l'égalité de deux surfaces.
///
/// Première surface
/// Deuxième surface
///
/// true si les deux surfaces sont égales, false sinon.
///
public static bool operator ==(Hectare a, Hectare b)
{
return a.Equals(b);
}
///
/// Teste la non-égalité de deux surfaces.
///
/// Première surface
/// Deuxième surface
///
/// true si les deux surfaces sont différentes, false sinon.
///
public static bool operator !=(Hectare a, Hectare b)
{
return !(a == b);
}
///
/// Teste si la première surface est inférieure à la deuxième.
///
/// Première surface
/// Deuxième surface
///
/// true si la première surface est inférieure à la deuxième, false sinon.
///
public static bool operator <(Hectare a, Hectare b)
{
return a.CompareTo(b) < 0;
}
///
/// Teste si la première surface est supérieure à la deuxième.
///
/// Première surface
/// Deuxième surface
///
/// true si la première surface est supérieure à la deuxième, false sinon.
///
public static bool operator >(Hectare a, Hectare b)
{
return a.CompareTo(b) > 0;
}
///
/// Teste si la première surface est inférieure ou égale à la deuxième.
///
/// Première surface
/// Deuxième surface
///
/// true si la première surface est inférieure ou égale à la deuxième, false sinon.
///
public static bool operator <=(Hectare a, Hectare b)
{
return a.CompareTo(b) <= 0;
}
///
/// Teste si la première surface est supérieure ou égale à la deuxième.
///
/// Première surface
/// Deuxième surface
///
/// true si la première surface est supérieure ou égale à la deuxième, false sinon.
///
public static bool operator >=(Hectare a, Hectare b)
{
return a.CompareTo(b) >= 0;
}
///
/// Additionne deux surfaces.
///
/// Première surface
/// Deuxième surface
///
/// La somme des deux surfaces.
///
public static Hectare operator +(Hectare a, Hectare b)
{
return new Hectare(a.Value + b.Value);
}
///
/// Soustrait la deuxième surface de la première
///
/// Première surface
/// Deuxième surface
///
/// La différence entre les deux surfaces.
///
public static Hectare operator -(Hectare a, Hectare b)
{
return new Hectare(a.Value - b.Value);
}
///
/// Multiplie une surface par un nombre.
///
/// surface
/// Multiplicateur
///
/// Le résultat de la multiplication.
///
public static Hectare operator *(Hectare area, double multiplier)
{
return new Hectare(area.Value*multiplier);
}
///
/// Divise une surface par un nombre.
///
/// surface
/// Diviseur
///
/// Le résultat de la division.
///
public static Hectare operator /(Hectare area, double divisor)
{
return new Hectare(area.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(Hectare 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} ha", value);
}
///
/// Essaye de parser le texte.
///
/// Texte à parser.
/// Surface.
/// true, si le parsing est réussi; sinon false.
public static bool TryParse(string text, out Hectare area)
{
var regex = new Regex(@"(?.*) ?ha");
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))
{
area = new Hectare(value);
return true;
}
}
area = new Hectare(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(Hectare 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 Hectare)
return Equals((Hectare) 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 IArea
///
/// Obtient la valeur de cette surface en mètres carrés
///
double IArea.ValueInSquareMeters
{
get { return _value * 10000; }
}
#endregion
}
///
/// Fournit des méthodes d'extension pour les surfaces
///
public static class AreaExtensions
{
///
/// Convertit une surface en mètres carrés
///
/// Le type de l'unité d'origine
/// Surface à convertir
/// Valeur en mètres carrés
public static SquareMeter ToSquareMeter(this T area)
where T : IArea
{
return area.ValueInSquareMeters;
}
///
/// Convertit une surface en pieds carrés
///
/// Le type de l'unité d'origine
/// Surface à convertir
/// Valeur en pieds carrés
public static SquareFoot ToSquareFoot(this T area)
where T : IArea
{
return area.ValueInSquareMeters / .09290304;
}
///
/// Convertit une surface en pouces carrés
///
/// Le type de l'unité d'origine
/// Surface à convertir
/// Valeur en pouces carrés
public static SquareInch ToSquareInch(this T area)
where T : IArea
{
return area.ValueInSquareMeters / .00064516;
}
///
/// Convertit une surface en acres
///
/// Le type de l'unité d'origine
/// Surface à convertir
/// Valeur en acres
public static Acre ToAcre(this T area)
where T : IArea
{
return area.ValueInSquareMeters / 4046.8564224;
}
///
/// Convertit une surface en ares
///
/// Le type de l'unité d'origine
/// Surface à convertir
/// Valeur en ares
public static Are ToAre(this T area)
where T : IArea
{
return area.ValueInSquareMeters / 100;
}
///
/// Convertit une surface en hectares
///
/// Le type de l'unité d'origine
/// Surface à convertir
/// Valeur en hectares
public static Hectare ToHectare(this T area)
where T : IArea
{
return area.ValueInSquareMeters / 10000;
}
}
}