當我在VB.NET中使用AngleSharp時,C#中的lambda成了一個問題。VB.NET可以使用function來代替lambda,但似乎只接受一個引數
Dim document = Await context.OpenAsync(Function(Res)
Res.Content("
")
.地址("http://localhost/")
.Header(HeaderNames.SetCookie, my_headers)
End Function[/span
)
錯誤:
Error BC30518 Overload resolution failed because no accessible 'OpenAsync' can be called with these arguments:
BrowsingContextExtensions中定義的擴展方法'Public Function OpenAsync(response As IResponse, [cancel As CancellationToken = Nothing]) As Task(Of IDocument)'。Lambda運算式不能被轉換為'IResponse',因為'IResponse'不是一個委托型別。
在'BrowsingContextExtensions'中定義的擴展方法'Public Function OpenAsync(request As DocumentRequest, [cancel As CancellationToken = Nothing]) As Task(Of IDocument)'。Lambda運算式不能被轉換為'DocumentRequest',因為'DocumentRequest'不是一個委托型別。
在'BrowsingContextExtensions'中定義的擴展方法'Public Function OpenAsync(url As Url, [cancel As CancellationToken = Nothing]) As Task(Of IDocument)'。Lambda運算式不能被轉換為'Url',因為'Url'不是一個委托型別。
擴展方法'Public Function OpenAsync(request As Action(Of VirtualResponse), [cancel As CancellationToken = Nothing]) As Task(Of IDocument)'定義于'BrowsingContextExtensions'。領先的'.'或'!'只能出現在'With'陳述句中。
擴展方法'Public Function OpenAsync(request As Action(Of VirtualResponse), [cancel As CancellationToken = Nothing]) As Task(Of IDocument)'定義于'BrowsingContextExtensions'。領先的'.'或'!'只能出現在'With'陳述句中。
擴展方法'Public Function OpenAsync(request As Action(Of VirtualResponse), [cancel As CancellationToken = Nothing]) As Task(Of IDocument)'定義在'BrowsingContextExtensions'。'HeaderNames'沒有被宣告。由于其保護級別,它可能無法訪問。
擴展方法'Public Function OpenAsync(request As Action(Of VirtualResponse), [cancel As CancellationToken = Nothing]) As Task(Of IDocument)'定義于'BrowsingContextExtensions'。領先的'.'或'!'只能出現在'With'陳述句中。
擴展方法'Public Function OpenAsync(request As Action(Of VirtualResponse), [cancel As CancellationToken = Nothing]) As Task(Of IDocument)'定義于'BrowsingContextExtensions'。領先的'.'或'!'只能出現在'With'陳述句中。
擴展方法'Public Function OpenAsync(request As Action(Of VirtualResponse), [cancel As CancellationToken = Nothing]) As Task(Of IDocument)'定義在'BrowsingContextExtensions'。'HeaderNames'沒有被宣告。由于其保護級別,它可能無法訪問。
在'BrowsingContextExtensions'中定義的擴展方法'Public Function OpenAsync(address As String, [cancellation As CancellationToken = Nothing]) As Task(Of IDocument)'。Lambda運算式不能被轉換為'String',因為'String'不是一個委托型別。
我如何解決這個問題?
通過41686d6564修改后的錯誤Error BC30518 Overload resolution failed because no accessible ' OpenAsync' can be called with these arguments:
擴展方法'Public Function OpenAsync(response As IResponse, [cancel As CancellationToken = Nothing]) As Task(Of IDocument)' 定義在'BrowsingContextExtensions'。Lambda運算式不能被轉換為'IResponse',因為'IResponse'不是一個委托型別。
在'BrowsingContextExtensions'中定義的擴展方法'Public Function OpenAsync(request As DocumentRequest, [cancel As CancellationToken = Nothing]) As Task(Of IDocument)' 。Lambda運算式不能被轉換為'DocumentRequest',因為'DocumentRequest'不是一個委托型別。
在'BrowsingContextExtensions'中定義的擴展方法'Public Function OpenAsync(url As Url, [cancel As CancellationToken = Nothing]) As Task(Of IDocument)' 。Lambda運算式不能被轉換為'Url',因為'Url'不是一個委托型別。
擴展方法 'Public Function OpenAsync(request As Action(Of VirtualResponse), [cancel As CancellationToken = Nothing]) As Task(Of IDocument)'定義于'BrowsingContextExtensions'。Sub或Set中的'Return'陳述句不能回傳一個值。
擴展方法 'Public Function OpenAsync(request As Action(Of VirtualResponse), [cancel As CancellationToken = Nothing]) As Task(Of IDocument)'定義于'BrowsingContextExtensions'。'HeaderNames'沒有被宣告。由于其保護級別,它可能無法被訪問。
在'BrowsingContextExtensions'中定義的擴展方法'Public Function OpenAsync(address As String, [cancellation As CancellationToken = Nothing]) As Task(Of IDocument)' 。Lambda運算式不能被轉換為'String',因為'String'不是一個委托型別。
uj5u.com熱心網友回復:
你的代碼有兩個問題:
你試圖使用的overload需要一個Action,而不是一個Func。因此,你應該使用Sub而不是Function。
在VB中,點必須出現在行的末尾,而不是下一個行的開頭(在C#中,你可以做任何一種),否則必須使用行的延續字符(即_)。
把你的代碼改成下面的樣子,應該可以使它被編譯:
Dim document = Await context.OpenAsync(
Sub(Res)
Res.Content(""/span>)。
Address("http://localhost/").
Header(HeaderNames.SetCookie, my_headers)
End Sub)
或者使用顯式續行:
Dim document = Await context.OpenAsync(
Sub(Res)
Res.Content(""/span>) _
.地址("http://localhost/") _
.Header(HeaderNames.SetCookie, my_headers)
End Sub)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/325294.html
標籤:
