2011-12-31 4 views
-2

я следующий код vb.net, и я получаю ошибку синтаксиса в немVb.net Код ошибки синтаксиса

Update

Protected Sub OpenLogin_Click(ByVal src As Object, ByVal e As CommandEventArgs) 
     Dim StrUri As String = e.CommandArgument.ToString() 
     Dim openid As New OpenIdRelyingParty() 
     Dim b = New UriBuilder(Request.Url) 
     With Key 
      .Query = "" 
     End With 
     'var b = new UriBuilder(Request.Url) { Query = "" }; 

     Dim req = openid.CreateRequest(StrUri) 

     Dim fetchRequest = New FetchRequest() 
     fetchRequest.Attributes.AddRequired(WellKnownAttributes.Contact.Email) 
     fetchRequest.Attributes.AddRequired(WellKnownAttributes.Name.First) 
     fetchRequest.Attributes.AddRequired(WellKnownAttributes.Name.Last) 

     req.AddExtension(fetchRequest) 

     req.RedirectToProvider() 

    End Sub 

Теперь ошибка в коде «Ключ не объявлен» Что я должен делать сейчас для этого

+0

Удалите зарезервированное слово 'Key' и' End With'. Также не требуется. – lsuarez

+0

Я сделал это с помощью {Query = ""} Но теперь ошибка «With Must end с соответствующим конечным тегом» –

+0

Тогда вам не нужно отделять блок с новой строкой или использовать символ продолжения строки '_'. – lsuarez

ответ

0

Две проблемы:

  1. Key зарезервированное слово должно использоваться только при идентификации ключа из нескольких частей для группировки с использованием Enumerable.GroupBy. Это не требуется для установки свойств объекта внутри их конструктора.

  2. Вы столкнулись с проблемой, которой вы отделили With декоратора на новую строку, которая синтаксически неправильно, потому что вы теперь рассматривая его как With блока, что означает, что каждая точка доступа будет направлена ​​на переменную сразу вслед за With заявление. Вы должны использовать строки символ продолжения или положить With на той же линии, как конструктор объекта:

Ex 1

Dim b = New UriBuilder(Request.Url) With { 
      .Query = "" 
     } 

Ex 2

Dim b = New UriBuilder(Request.Url) _ 
      With { .Query = "" } 

EDIT:

Вы не можете использовать этот синтаксис для проекта Visual Studio 2005/.NET 2.0. Просто создайте объект, затем инициализируйте свойство:

Dim b As New UriBuilder(Request.Url) 
b.Query = "" 
+0

Я использовал ur как Ex1, так и Ex2, но он все еще дает ошибку «End of Statement is Expected». Что теперь? –

+0

Какую версию Visual Studio вы используете и какую библиотеку .NET? – lsuarez

+0

Я довольно уверен, что инициализация инициализации не поддерживается так далеко. Просто создайте свой объект и установите свойство на следующей строке. – lsuarez

0

AFAIK, вам не нужны фигурные скобки.

With Something 
    .Property1 = True 
    .Property2 = "Inactive" 
    ' And so on 
End With 

UPDATE

With Key 
    .Query = "" 
End With 

Почему вам нужно с пунктом здесь так или иначе? Выше синтаксически эквивалентно

Key.Query = "" 
+0

Пожалуйста, сообщите в соответствии с моим кодом –

+0

Что я должен писать для этого с помощью {Key .Query = ""} Завершить –

+0

Проверьте мое обновление. –

0

Объявление переменной ключа или удаление ее из кода.

Смежные вопросы