Итак, у меня есть приложение, которое использует веб-сервис. На стороне пользовательского интерфейса пользователь выбирает таблицу, которая отправляет запрос через Интернет на мой веб-сервис, чтобы вернуть поля этой таблицы.
Таким образом, после выполнения этого запроса у меня на стороне веб-службы есть ряд имен, пар типов, которые мне нужно сериализовать и отправить обратно моему клиенту.Я мог бы использовать List (of String ()) для отправки значений обратно, но вместо этого я хочу использовать List (из Custom_Class), потому что позже мне придется делать это в гораздо большем масштабе, и я хочу учиться на этой более простой версии.
Теперь я знаю из своего исследования, что я могу создать класс из документа .XSD, так что я думаю, что мне нужно сделать, это преобразовать этот класс в .XSD и каким-то образом отправить его с моим запросом в WebService.так что он может использовать этот .XSD для динамического создания класса во время выполнения, создания экземпляра этого класса в объектах, заполнения этих объектов результирующим набором, объединения его в строго типизированный список (из ReturnFields), сериализации этого в XML, отправки его обратномоему клиенту десериализуйте его обратно и покажите для него.
Итак, 2 вопроса: 1. Я на правильном пути или иду по этому пути совсем неправильно.2. Как передать схему .XSD моему веб-сервису, чтобы он мог использовать ее для создания класса на стороне сервера?
--------------РЕДАКТИРОВАТЬ ----------- Итак, основываясь на мнениях pMartin, я немного пересмотрю этот вопрос.
Итак, ниже приведен мой код в его нынешнем виде.
У меня естькласс «Поля», проживающий на моем уровне библиотеки
Public Class Fields
Private Field_Name As String
Private Field_Type As System.Type
Public Sub New()
End Sub
Protected Overrides Sub Finalize()
End Sub
Property Name() As String
Get
Return Field_Name
End Get
Set(ByVal value As String)
Field_Name = value
End Set
End Property
Property Type() As System.Type
Get
Return Field_Type
End Get
Set(ByVal value As System.Type)
Field_Type = value
End Set
End Property
End Class
Этот метод используется в моей библиотеке следующим кодом.
Public Function Get_List_Of_Fields(ByVal Table_Name As String, ByVal Database_Name As String) As List(Of Fields)
Dim List_Of_Fields As New List(Of Fields)
Dim DataModel As MetaModel = Get_Datamodel(Database_Name)
Dim Data_Table = (From DataTable In DataModel.GetTables Where DataTable.TableName = Table_Name).FirstOrDefault
For Each Field In Data_Table.RowType.DataMembers
Dim Fields_Obj As New Fields
Fields_Obj.Name = Field.Name
Fields_Obj.Type = Field.Type
List_Of_Fields.Add(Fields_Obj)
Next
Return List_Of_Fields
End Function
, который возвращается к моему веб-сервису (.ASMX)
<WebMethod()> _
Public Function Get_List_of_Fields(ByVal Table_Name As String, ByVal Database_Name As String) As List(Of Fields)
Return _DynaLib.Get_List_Of_Fields(Table_Name, Database_Name)
End Function
Что возвращает моему клиенту? Здесь моя ошибка в этой строке «возврата»
Imports Dynamic_Charting.DynamicReference
Private _DynamicService As New DynamicServiceSoapClient
Public Function Get_List_of_Fields(ByVal Table_name As String, ByVal Database_Name As String) As List(Of Fields)
Return _DynamicService.Get_List_of_Fields(Table_name, Database_Name)
End Function
Именно здесь у меня есть ошибка.Я получаю следующую ошибку.
ошибка 11
Значение типа «1-мерный массив Dynamic_Charting.DynamicReference.Fields» не может быть преобразовано в «System.Collections.Generic.List (Of Dynamic_Charting.DynamicReference.Поля).