Juste pour des raisons de test, je définis mon cas-Méthode de LINQ comme ceci:Définition de ma propre méthode Where pour LINQ to Objects - Comment savoir lequel sera utilisé?
namespace Test
{
public static class LinqTest
{
public static IEnumerable<TSource> Where<TSource>(
this IEnumerable<TSource> source,
Func<TSource, bool> predicate)
{
return new List<TSource> { };
}
}
}
Donc, si j'utilise une requête comme ça, je n'obtenir un résultat:
var test = new string[]{ "a", "b", "c" };
var x = from y in test
where y.Length > 0
select y;
foreach (var element in x)
Console.WriteLine(element);
Ma question est: Comment le compilateur sait-il quelle méthode d'extension est supposée être appelée? Celui inclus dans LINQ, ou celui défini par l'utilisateur?
Cheers, Chris
Et comment le mainteneur de votre code sait-il qui est utilisé? Cela semble être une mauvaise chose à faire. – Henrik
Je suis totalement d'accord. Je l'ai fait juste par intérêt. Je ne prévois pas de le faire dans une application réelle. – Christopher