Toon posts:

[VB.NET] DEserialiseren UserControl

Pagina: 1
Acties:

Verwijderd

Topicstarter
k heb een probleem bij het DEserialiseren van een usercontrol!

Mijn usercontrol bestaat uit:

- een Label
- 2 Textboxen
- een button

De usercontrol implementeert de ISerializable interface, en het serialiseren zelf gaat goed!

Maar zodra ik ga DEserialiseren loopt ie stuk, en geeft de volgende error:

code:
1
2
3
An unhandled exception of type 'System.Reflection.TargetInvocationException' occurred in mscorlib.dll

Additional information: Exception has been thrown by the target of an invocation.


Nu is mijn engels niet je van het, en zegt mij deze error niet veel! Invocation? :S

Maar goed, ik heb iig gevonden waar ie op vast loopt, alleen weet ik niet wrom ie dat doet, omdat het bij andere usercontrols wel goed gaat! :(

Visual Basic .NET:
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
 Public Sub New(ByVal info As SerializationInfo, ByVal context As StreamingContext)
            ' ucSearch
            Me.Name = info.GetString("ucSearch_name")
            Me.Location = New Point(info.GetInt32("ucSearch_x"), info.GetInt32("ucSearch_y"))
            Me.Width = info.GetInt32("ucSearch_width")
            Me.Height = info.GetInt32("ucSearch_height")

            'lblLabel
            Me.lblLabel.Name = info.GetString("lblLabel_name")
            Me.lblLabel.Text = info.GetString("lblLabel_text")
            Me.lblLabel.Location = New Point(info.GetInt32("lblLabel_x"), info.GetInt32("lblLabel_y"))
            Me.lblLabel.Height = info.GetInt32("lblLabel_height")
            Me.lblLabel.Width = info.GetInt32("lblLabel_width")

            '' txtCode 
            'Me.txtCode.Name = info.GetString("txtCode_name")
            'Me.txtCode.Text = info.GetString("txtCode_text")
            'Me.txtCode.Location = New Point(info.GetInt32("txtCode_x"), info.GetInt32("txtCode_y"))
            'Me.txtCode.Width = info.GetInt32("txtCode_width")
            'Me.txtCode.Height = info.GetInt32("txtCode_height")
            'Me.txtCode.columnName = info.GetBoolean("txtCode_column")
            'Me.txtCode.required = info.GetBoolean("txtCode_required")
            'Me.txtCode.info = info.GetBoolean("txtCode_info")

            '' txtInfo
            'Me.txtCode.Name = info.GetString("txtInfo_name")
            'Me.txtCode.Text = info.GetString("txtInfo_text")
            'Me.txtCode.Location = New Point(info.GetInt32("txtInfo_x"), info.GetInt32("txtInfo_y"))
            'Me.txtCode.Width = info.GetInt32("txtInfo_width")
            'Me.txtCode.Height = info.GetInt32("txtInfo_height")
            'Me.txtCode.columnName = info.GetBoolean("txtInfo_column")
            'Me.txtCode.required = info.GetBoolean("txtInfo_required")
            'Me.txtCode.info = info.GetBoolean("txtInfo_info")

            '' btnSearch
            'Me.btnSearch.Name = info.GetString("btnSearch_name")
            'Me.btnSearch.Text = info.GetString("btnSearch_text")
            'Me.btnSearch.Location = New Point(info.GetInt32("btnSearch_x"), info.GetInt32("btnSearch_y"))
            'Me.btnSearch.Width = info.GetInt32("btnSearch_width")
            'Me.btnSearch.Height = info.GetInt32("btnSearch_height")
            'Me.btnSearch.Visible = info.GetBoolean("btnSearch_visible")

            Me.InitializeComponent()

        End Sub


Hij loopt dus stuk op regel 9, Me.lblLabel.Name = info.GetString("lblLabel_name"), en geeft dan bovenstaande error.

Ik deserialiseer vanuit een binair iets! Ik had geprobeerd om te kijken of ie wel alles GOED deed serialiseren, en dat bleek goed te zijn, omdat in de

SOAP file (deed dus tijdelijk serialiseren naar een XML file), alle waardes goed stonden!

Iemand enig idee, wrom ie de fout in gaat? En misschien ook een oplossing?

  • whoami
  • Registratie: December 2000
  • Laatst online: 14:31
Geen oplossing voor je probleem, maar eerder een opmerking:
Waarom is die constructor public? Je gaat die constructor toch niet zelf gaan gebruiken bij het instantieren van een object? Die constructor wordt enkel intern gebruikt om te deserializen geloof ik, dus zou een protected access modifier al voldoende moeten zijn.

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op 30 december 2003 @ 11:39:
Geen oplossing voor je probleem, maar eerder een opmerking:
Waarom is die constructor public? Je gaat die constructor toch niet zelf gaan gebruiken bij het instantieren van een object? Die constructor wordt enkel intern gebruikt om te deserializen geloof ik, dus zou een protected access modifier al voldoende moeten zijn.
Je heb gelijk ! Hij is nu protected ! ;)

Maar 'k zoe'k een oplossing ! :(

  • whoami
  • Registratie: December 2000
  • Laatst online: 14:31
Als je regel 9 weglaat, dan werkt het zonder fouten?
Zoja, check dan eens of je wel de juiste naam (evt. case-sensitive) hebt gebruikt voor het ophalen van de gegevens.

Ik heb het net ff getest:
Ik heb iets geserializeerd, en in m'n deserialize constructor heb ik een waarde proberen in te laden die ik niet geserializeerd had; gevolg: een TargetInvocationException.

[ Voor 38% gewijzigd door whoami op 30-12-2003 11:57 ]

https://fgheysels.github.io/


  • EfBe
  • Registratie: Januari 2000
  • Niet online
indien je .NET 1.0 gebruikt -> er zitten deserialization bugs in de binary formatter. Gebruik .NET 1.1. voor serialization.

Je exception kan ook komen door het feit dat de value niet gevonden wordt. Probeer het met de soap formatter.

* EfBe vraagt zich verder af waarom in vredesnaam GUI elements moeten worden geserialized. Het wordt steeds gekker :)

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com