Je suis un peu confus quant à savoir pourquoi cela ne donne pas une erreur. J'ai trouvé ce code à l'intérieur de certains anciens logiciels obsolètes et j'ai été surpris de le voir fonctionner.Méthodes d'extension en C#: pourquoi cela fonctionne-t-il?
public static string CleanFileName(this string fileName)
{
return CleanFileName(fileName, 64);
}
public static string CleanFileName(this string fileName, int maxLength)
{
//some logic
}
Mon expérience avec les méthodes d'extension est de l'appeler comme ceci:
fileName.CleanFileName(64);
Est-ce que le travail parce que sa méthode statique ainsi? Est-ce une pratique courante et juste quelque chose que je n'ai pas encore vu ou un morceau de code hérité dépassé que je devrais tuer avec le feu?
Pourquoi pensez-vous que cela ne devrait pas fonctionner? http://msdn.microsoft.com/en-us/library/bb383977.aspx indique clairement que 'les méthodes d'extension sont un type spécial de méthode statique, mais elles sont appelées comme si elles étaient des méthodes d'instance sur le type étendu'. –