À titre d'exemple, j'ai créé plusieurs méthodes d'extension pour convertir des chaînes de caractères et des objets en décimales et en int32.
public static decimal ToDecimal(this object o)
{
return Convert.ToString(o).ToDecimal();
}
public static decimal ToDecimal(this string s)
{
decimal d = decimal.TryParse(s, out d) ? d : 0;
return d;
}
public static Int32 ToInt32(this object o) { //etc }
Mais je veux éviter les enchaînements de ce type :
myobject.ToDecimal().ToDecimal();
ou même
myobject.ToDecimal().ToInt32();
Si le programmeur veut convertir la décimale en int32, je veux qu'il utilise Convert.ToInt32()
qui est peut-être simplement plus efficace puisque la partie Convert.ToString est omise, et qui a également plus de fonctionnalités.
Comment puis-je dire à C# que seuls les objets peuvent utiliser la méthode d'extension et non les décimales, les int, etc.