Nie można wywnioskować typów parametrów typu w metodzie rozszerzenia "<methodname" zdefiniowanej w "typename>" z tych argumentów, ponieważ nie są konwertowane na ten sam typ

Nie można wywnioskować typów parametrów typu w metodzie rozszerzenia "<methodname" zdefiniowanej w metodzie "typename>" z tych argumentów, ponieważ nie są one konwertowane na ten sam typ. Jawne określenie typów danych może poprawić ten błąd.

Podjęto próbę użycia wnioskowania typu w celu określenia typu (lub typów) parametru typu (lub parametrów) podczas oceniania wywołania metody rozszerzenia ogólnego. Kompilator nie może odnaleźć typu danych spełniającego ograniczenia wszystkich argumentów. W związku z tym zgłosił ten błąd.

Uwaga

Podczas określania argumentów nie jest opcją (na przykład w przypadku operatorów zapytań w wyrażeniach zapytania) komunikat o błędzie jest wyświetlany bez drugiego zdania.

Poniższy kod demonstruje błąd.

Option Strict Off
Module Module3
    Sub Main()

        Dim c1 As New Class1

        '' Not valid. Integer and Date do not convert to the same type.
        'c1.targetMethod(19, #3/4/2007#)

    End Sub

    <System.Runtime.CompilerServices.Extension()> _
    Sub targetMethod(Of T)(ByVal p0 As Class1, ByVal p1 As T, ByVal p2 As T)
    End Sub

    Class Class1
    End Class

End Module

Identyfikator błędu: BC36661 i BC36658

Aby poprawić ten błąd

  • Można jawnie przekonwertować jeden lub więcej argumentów na zgodny typ, jak pokazano w poniższym kodzie:

    c1.targetMethod(19, #3/4/2007#.ToOADate)
    
  • Możesz określić typ danych dla parametru typu lub parametrów, do których argumenty są konwertowane, jak pokazano w poniższym kodzie:

    c1.targetMethod(Of String)(19, #3/4/2007#)
    

Zobacz też