Объявление ожидаемой ошибки для System.Xml.Linq.XDocument в VB.Net - PullRequest
0 голосов
/ 27 марта 2012

Я пытаюсь узнать о XML-литералах в VB. В «обучающемся» проекте, основанном на шаблоне консольного приложения, следующие компоненты компилируются и запускаются без ошибок (и без каких-либо специальных операторов Imports или добавленных ссылок):

Module Module1
Sub Main()
    Dim db As New AdventureWorksDataContext
    Dim stores = <?xml version="1.0"?>
                 <stores>
                     <%= From vStoreWithDemographics In db.vStoreWithDemographics _
                         Select <store>
                                    <ID>
                                        <%= vStoreWithDemographics.BusinessEntityID %>
                                    </ID>
                                    <Name>
                                        <%= vStoreWithDemographics.Name %>
                                    </Name>
                                    <AnnualSales>
                                        <%= vStoreWithDemographics.AnnualSales %>
                                    </AnnualSales>
                                    <BankName>
                                        <%= vStoreWithDemographics.BankName %>
                                    </BankName>
                                    <SquareFeet>
                                        <%= vStoreWithDemographics.SquareFeet %>
                                    </SquareFeet>
                                    <NumberEmployees>
                                        <%= vStoreWithDemographics.NumberEmployees %>
                                    </NumberEmployees>
                                </store>
                     %>
                 </stores>
    stores.Save("c:\stores.xml")
    Process.Start("c:\stores.xml")
End Sub

Конечный модуль

Тем не менее, я попытался повторить то же самое в новом проекте, основанном на приложении Windows Forms, и я получаю ошибки в последних 2 утверждениях (оба говорят только " Объявление ожидается "; также обратите внимание: я сравнил ссылки для консольного приложения с теми, которые предусмотрены по умолчанию для приложения winforms и добавлен System.Data.Linq, затем с учетом ошибки я добавил 2 оператора Imports, но я все еще получаю ошибки).

Imports System.Diagnostics
Imports System.Xml.Linq.XDocument
Public Class Form1
Dim db As New AdventureWorksDataContext
Dim stores = <?xml version="1.0"?>
             <stores>
                 <%= From vStoreWithDemographics In db.vStoreWithDemographics _
                     Select <store>
                                <ID>
                                    <%= vStoreWithDemographics.BusinessEntityID %>
                                </ID>
                                <Name>
                                    <%= vStoreWithDemographics.Name %>
                                </Name>
                                <AnnualSales>
                                    <%= vStoreWithDemographics.AnnualSales %>
                                </AnnualSales>
                                <BankName>
                                    <%= vStoreWithDemographics.BankName %>
                                </BankName>
                                <SquareFeet>
                                    <%= vStoreWithDemographics.SquareFeet %>
                                </SquareFeet>
                                <NumberEmployees>
                                    <%= vStoreWithDemographics.NumberEmployees %>
                                </NumberEmployees>
                            </store>
                 %>
             </stores>
    stores.Save("c:\stores.xml")                   'error here
    Process.Start("c:\stores.xml")                 'error here
End Class

Пожалуйста, скажите мне, что мне не хватает. Спасибо.

1 Ответ

1 голос
/ 27 марта 2012

Ваш второй блок кода не находится внутри метода.Он должен быть внутри Sub или Function:

 Public Class Form1
      Public Sub SomeFoo()
           Dim db As New AdventureWorksDataContext
           Dim stores = <?xml version="1.0"?>
                           <stores>
                                <%= From vStoreWithDemographics In db.vStoreWithDemographics _
                                     Select <store>
                                                   <ID>
                                                        <%= vStoreWithDemographics.BusinessEntityID %>
                                                   </ID>
                                                   <Name>
                                                        <%= vStoreWithDemographics.Name %>
                                                   </Name>
                                                   <AnnualSales>
                                                        <%= vStoreWithDemographics.AnnualSales %>
                                                   </AnnualSales>
                                                   <BankName>
                                                        <%= vStoreWithDemographics.BankName %>
                                                   </BankName>
                                                   <SquareFeet>
                                                        <%= vStoreWithDemographics.SquareFeet %>
                                                   </SquareFeet>
                                                   <NumberEmployees>
                                                        <%= vStoreWithDemographics.NumberEmployees %>
                                                   </NumberEmployees>
                                              </store>
                                %>
                           </stores>
           stores.Save("c:\stores.xml")
           Process.Start("c:\stores.xml")
      End Sub
 End Class

И тогда в какой-то момент в вашем приложении что-то вызовет SomeFoo.

...