я должен делать что-то здесь не так (потому что на самом деле, каковы мои шансы расцепления над другими bug in the Vb.net compiler?)Странное поведения с родовыми ограничениями на методе расширения
У меня есть статическая обобщенная функция в .net 2.0 Vb код, я думал, что это было время, чтобы «обновить», чтобы быть метод расширения, но компилятор жалуется
метод расширения «AddIfUnqiue» имеет ограничения типа, которые никогда не могут быть удовлетворены .
Вот тривиальный пример, который показывает ту же проблему. Старая статическая версия (которая работает отлично), а затем с помощью метода расширения
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
эквивалентный код в C# не имеет никаких проблем, это просто вопрос Vb.
public static void AddIfUnique<T, L>(this L myList, T item) where L : List<T>
{
if (myList.IndexOf(item) < 0)
myList.Add(item);
}
Кто-нибудь знает, почему это не работает? Это может быть мои ограничения Vb (мне удобнее C#), но я не вижу, что я сделал неправильно.
Спасибо,
Вы действительно мета-рыцарь в сияющих доспехах. Огромное спасибо :) –