Dans ce cas, je ne comprends pas ce qui empêche de les modifier; dans ce cas demande à ceux chargés du développement de ces classes de leur mettre l'attribut Serializable. Tu sembles avoir les arguments pour.
Version imprimable
Comment mettons l'attribut Serializable à une classe ??
:DCode:
1
2
3
4
5 <Serializable()> _ Public Class MyClassSerializable End Class
OK merci, je test dans la journée.:D
Attention, il n'est pas impossible que tes classes ne soit pas sérialisables; elle vont, peut être, nécessiter des modifications.
Si c'est le cas, je considére (mais c'est une vue personelle) que c'est une faute de design : j'estime que les composants métiers doivent être persistables.
Toujours la même erreur ... :cry:Code:
1
2
3
4 Impossible de sérialiser l'état de session. En mode 'StateServer' et 'SQLServer', ASP.NET sérialise les objets d'état de session, et par conséquent, les objets non sérialisables ou les objets MarshalByRef ne sont pas autorisés. La même restriction s'applique si une sérialisation similaire est effectuée par le magasin d'état de session personnalisé en mode 'Personnalisé'. Description : Une exception non gérée s'est produite au moment de l'exécution de la demande Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code. Détails de l'exception: System.Web.HttpException: Impossible de sérialiser l'état de session. En mode 'StateServer' et 'SQLServer', ASP.NET sérialise les objets d'état de session, et par conséquent, les objets non sérialisables ou les objets MarshalByRef ne sont pas autorisés. La même restriction s'applique si une sérialisation similaire est effectuée par le magasin d'état de session personnalisé en mode 'Personnalisé'.
Pourtant j'ai mis cela dans mes classes
etCode:
1
2 <Serializable()> _ Public Class GestionMachine
Dans le code de mes pages je fais ainsi :Code:
1
2 <Serializable()> _ Public Class GestionCaddie
Code:
1
2
3
4
5
6 Dim Panier as GestionCaddie = Session("PANIER") Panier.(...) 'Actions diverses Session("PANIER") = Panier
Visiblement tes classes ne sont pas sérialisables.
Peux tu poster, non pas le code de ta classe, mais la liste compléte des membres et les signatures de méthode ?
Tu as ça comment ? :oops:
Tu voix quoi par "liste compléte des membres et les signatures de méthode" ?
Euh ... dans une classe t'as des methodes et des membres non ? (plus eventuellement des classes internes et des enum, mais bon ...)
Donc je te demande de poster la liste des membres (c'est leur type qui m'interesse) et les signatures de méthodes (pas l'implémentation, je m'en bas les b..nes). Désolé, je ne vois vraiment pas comment je pourrais exprimer autrement quelque chose d'aussi trivial.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Option Strict On Public Class GestionMachine Public Structure unComposant Public vListeComposants As ArrayList Public Sub New() Public Sub AjouteComposant(ByVal pIdCompo As Integer, ByVal pCode As String, ByVal pLibelle As String, ByVal pStock As Integer, ByVal pPrix As Double, ByVal pMontage As Double, ByVal pFiltre As ArrayList, ByVal pValeurDDL As String, ByVal pNomCompo As String, ByVal pIncomp As Boolean, Optional ByVal pNumCmd As String = "") Public Function SupprimeComposant(ByVal pIdCompo As Integer, Optional ByVal pNumCmd As String = "") As Boolean Public Function RecuperationComposant(ByVal pIdCompo As Integer) As unComposant Public Function RecuperationListe() As ArrayList Public Sub EffaceListe() Public Sub ModifPrixCompo(ByVal pIdCompo As Integer, ByVal pPrix As Double, Optional ByVal pNumCmd As String = "") End Class
Ok, je soupçonne le contenu de ton arrayList de ne pas être sérialisable.
Accessoirement, pourquoi n'utilises tu pas des génériques plutôt que ces verrues du 1.1 ?
Le plus simple : instancie un de tes objets dans une appli console à part, et sérialize le, même en xml; ainsi tu verras pourquoi il ne serialize pas.
Que contient ta struct ?
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 Public Structure unComposant Dim ... As Integer Dim ... As String Dim ... As String Dim ... As Integer Dim ... As Double Dim ... As Double Dim ... As ArrayList Dim ... As String Dim ... As String Dim ... As Boolean End Structure
Alors ? :)
J'arrive, j'arrive (je ne me connecte jamais le WE, j'ai d'autres occupations).
Que contiennent tes ArrayList ?
As tu essayé ce que je t'ai suggéré, en l'occurence sérialiser "à part" une des instances pour y voir plus clair du pourquoi du refus de sérialiser par le système ?
Travailes tu en .net 2.0 (ou plus) ou 1.1 ? si tu travailles en 2.0, pourquoi ne pas utiliser les listes génériques (typées) ? il est possible que les listes "à tout faire" ne puissent être sérialisées (je n'en sais rien, ça fait trop longtemps que je ne touche plus au 1.1 et donc n'en utilise plus).
Je travaile en .Net 2.0
Modifier le code de ma classe de cette façon m'est impossible à cause du temps que cela va prendre (c'est pas moi qui décide de cela :?)
Ok, et pour le reste des questions ? (accessoirement, pour répondre à ton argument "temps", il faudrait voir combien de temps ça va prendre pour régler le problème sans modifier la classe - ça peut être assez gratiné :D : je te rapelle que tu as posé ton problème le 6/12)