je dois faire quelque chose de mal ici (parce que vraiment, quelles sont les chances de me trébuche sur une autre bug in the Vb.net compiler?)comportement étrange avec contraintes génériques sur une méthode d'extension
J'ai une fonction générique statique dans .net 2.0 Vb code, je pensais qu'il était temps de « mettre à jour » pour être une méthode d'extension, mais le compilateur se plaint avec
méthode d'extension « AddIfUnqiue » a des contraintes de type qui ne peut jamais être satisfait .
Voici un exemple trivial qui affiche le même problème. L'ancienne version statique (qui fonctionne très bien), suivie par la méthode d'extension
Public Class MyStaticClass
Public Shared Sub AddIfUnqiue(Of T, L As {List(Of T)})(ByVal this As L, ByVal item As T)
If this.IndexOf(item) < 0 Then
this.Add(item)
End If
End Sub
End Class
Module UtilityExtensions
<Extension()> _
Sub AddIfUnqiue(Of T, L As {List(Of T)})(ByVal this As L, ByVal item As T)
'ERROR: Extension method 'AddIfUnqiue' has type constraints that can never be satisfied'
If this.IndexOf(item) < 0 Then
this.Add(item)
End If
End Sub
End Module
Le code équivalent en C# n'a pas de problème, il est juste une question Vb.
public static void AddIfUnique<T, L>(this L myList, T item) where L : List<T>
{
if (myList.IndexOf(item) < 0)
myList.Add(item);
}
Quelqu'un at-il une idée de pourquoi cela ne fonctionne pas? Il pourrait bien s'agir de mes contraintes Vb (je suis plus à l'aise avec C#), mais je ne vois pas ce que j'ai fait de mal.
Merci,
Vous êtes en effet un Méta-Chevalier en armure étincelante. Merci beaucoup :) –