powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Помогите с сериализацией
7 сообщений из 7, страница 1 из 1
Помогите с сериализацией
    #39526582
Сатир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прощения. Возможно вопрос выеденного яйца не стоит, но столкнулся с проблемой. Сильно не пинайте. Что либо пишу не часто и как правило для себя.

Итак. Есть web сервис. Принимает пять параметров, а отдает коллекцию класса Discount (Name, Value).

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
<System.Web.Script.Services.ScriptService()> _
<System.Web.Services.WebService(Namespace:="http://tempuri.org/")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class Service1
    Inherits System.Web.Services.WebService
    Public da As SqlDataAdapter
    Public SQLConn As SqlClient.SqlConnection
    Public param As SqlParameter
    Public comn As SqlCommand
    Public ds As DataSet
    Public z As Discount
    Public err As Discount
    Public connectionstring As String
    Public xlAPP As Object
    Public Property TableName As String
    Private Property SqlDataAdapter1 As SqlDataAdapter
    Private Property SqlDataAdapter2 As SqlDataAdapter

    Public Class Discount
        Public Name As String
        Public Value As Decimal
        Public Sub New(Name As String, Value As Decimal)
            Me.Name = Name
            Me.Value = Value
        End Sub
    End Class

    <WebMethod()> _
    Public Function GetDiscount(ByVal Param1 As Int32, ByVal Param2 As Int32, ByVal Param3 As Int32, ByVal Param4 As Int32, ByVal Param5 As Int32) As List(Of Discount)

bla-bla-bla...


        Dim itog As New List(Of Discount)

        For w = 0 To s - 1
            If VSArray(w, 0) <> "" Then
                Dim z As Discount = New Discount(VSArray(w, 0), VSArray(w, 1))
                itog.Add(z)
            End If
        Next


        Return (itog)


    End Function

End Class



Возникает исключение по сериализации.

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
Невозможно сериализовать WebService4.Service1.Discount, т. к. он не имеет беспараметрического конструктора. 
 Описание: Необработанное исключение при выполнении текущего веб-запроса. Изучите трассировку стека для получения дополнительных сведений о данной ошибке и о вызвавшем ее фрагменте кода. 

Сведения об исключении: System.InvalidOperationException: Невозможно сериализовать WebService4.Service1.Discount, т. к. он не имеет беспараметрического конструктора.

Ошибка источника: 


Необработанное исключение при выполнении текущего веб-запроса. Информацию о происхождении и месте возникновения исключения можно получить, используя следующую трассировку стека исключений.  



Почитал эти ваши интернеты, в случаях с c# предлагают определять класс без параметров

public Discount
{
}

и типа все работает. Но что-то я не могу разобраться как его в моем случае определить.
...
Рейтинг: 0 / 0
Помогите с сериализацией
    #39526624
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну ты отличаешь метод от конструктора ?
Код: c#
1.
2.
Public Sub New()
End Sub
...
Рейтинг: 0 / 0
Помогите с сериализацией
    #39526637
Сатир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
handmadeFromRuну ты отличаешь метод от конструктора ?
Код: c#
1.
2.
Public Sub New()
End Sub




Не понял вопрос. Ну в данном случае прописан у меня для этого класса конструктор. И что?

Не могли бы вы развернуть ответ?
...
Рейтинг: 0 / 0
Помогите с сериализацией
    #39526651
Сатир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
handmadeFromRuну ты отличаешь метод от конструктора ?
Код: c#
1.
2.
Public Sub New()
End Sub



Ок. Если вы намекаете на то, что нужно использовать конструктор по умолчанию, то тогда так:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
    Public Class Discount
        Public Discount(Name, Value)
        Public Name As String
        Public Value As Decimal
        'Public Sub New(Name As String, Value As Decimal)
        '   Me.Name = Name
        '  Me.Value = Value
        'End Sub
    End Class



Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
        Dim itog As New List(Of Discount)

        For w = 0 To s - 1
            If VSArray(w, 0) <> "" Then
                Dim z As Discount = New Discount()
                z.Name = VSArray(w, 0)
                z.Value = VSArray(w, 1)
                itog.Add(z)

            End If
        Next


        Return (itog)


    End Function

End Class



То тут уже ругается на:

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
Невозможно сериализовать объект типа System.Object[,]. Многомерные массивы не поддерживаются. 
 Описание: Необработанное исключение при выполнении текущего веб-запроса. Изучите трассировку стека для получения дополнительных сведений о данной ошибке и о вызвавшем ее фрагменте кода. 

Сведения об исключении: System.NotSupportedException: Невозможно сериализовать объект типа System.Object[,]. Многомерные массивы не поддерживаются.

Ошибка источника: 


Необработанное исключение при выполнении текущего веб-запроса. Информацию о происхождении и месте возникновения исключения можно получить, используя следующую трассировку стека исключений.  
...
Рейтинг: 0 / 0
Помогите с сериализацией
    #39526674
Сатир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Херня какая-то.

Отдаю коллекцию экземпляров одного класса даже без наследников. Откуда он многомерный массив взял то?
Коллекция строк например в данном примере отдается на раз-два.
...
Рейтинг: 0 / 0
Помогите с сериализацией
    #39526687
Сатир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С одним параметром сериализуется на ура.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
    Public Class Discount
        Public Discount(Name) ', Value)
        Public Name As String
        ' Public Value As Decimal
        Public Sub New()

        End Sub
        Public Sub New(Name As String) ',Value As Decimal)
            Me.Name = Name
            '  Me.Value = Value


        End Sub
    End Class



Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
 Dim itog As New List(Of Discount)

        For w = 0 To s - 1
            If VSArray(w, 0) <> "" Then
               
                Dim p1 As String = VSArray(w, 0)
                Dim p2 As Double = System.Convert.ToDecimal(VSArray(w, 1))

                Dim z As Discount = New Discount(p1)
                itog.Add(z)

        
            End If
        Next


        Return (itog)


    End Function

End Class



Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
<?xml version="1.0" encoding="UTF-8"?>

-<ArrayOfDiscount xmlns="http://tempuri.org/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">


-<Discount>


-<Discount>

<anyType xsi:nil="true"/>

</Discount>

<Name>Discount0</Name>

</Discount>


-<Discount>


-<Discount>

<anyType xsi:nil="true"/>

</Discount>

<Name>Discount1</Name>

</Discount>


-<Discount>


-<Discount>

<anyType xsi:nil="true"/>

</Discount>

<Name>Discount2</Name>

</Discount>

</ArrayOfDiscount>



Помогайте, люди добрые.
...
Рейтинг: 0 / 0
Помогите с сериализацией
    #39527568
beowulf-da
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сатир,

Ваш Discount включает в себя поле типа Discount. Это точно правильно?
Код: xml
1.
2.
3.
4.
5.
6.
  <Discount>
    <Discount>
      <anyType xsi:nil="true"/>
    </Discount>
    <Name>Discount0</Name>
  </Discount>
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Помогите с сериализацией
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]