J'ai du code qui calcule la valeur absolue d'un type de valeur personnalisée:C# valeur absolue pour le type dynamique
public Angle Abs(Angle agl)
{
return (360 - Angle.Degrees);
}
Ce n'est pas ma demande réelle, mais elle servira mon point. Ensuite, j'ai une méthode comme ceci:
public dynamic DoStuff(Foo f)
{
// f contains a list of value types: int, double, decimal, angle
return Abs(f[0]);
}
public dynamic this[int intIndex] // Within class Foo
{
get { return Items[intIndex]; }
}
Ma question est la suivante: dans la fonction DoStuff() comment puis-je surcharger la fonction Abs() pour accepter les types de valeur normale à l'aide System.Math.Abs (), mais aussi accepter le type d'angle?
Les réponses supportées par C# 4.0 sont disponibles.
Je suis prêt à avoir une fonction séparée; quelque chose comme ça [en supposant qu'il travaillerait en réalité]:
public dynamic Abs(dynamic dyn)
{
if (dyn.GetType() = typeof(Angle))
{
return Abs(dyn);
}
else
{
return System.Math.Abs(dyn);
}
}
Avez-vous essayé votre idée de «fonction séparée»? –
La fonction séparée fonctionne apparemment. J'ai littéralement copié et collé car il ne compilerait pas. Je n'ai aucune idée pourquoi cela fonctionne maintenant et n'a pas fonctionné plus tôt. Wierd. Peut-être un pépin Beta2. – Ames