OVH Cloud OVH Cloud

.Net Remoting

4 réponses
Avatar
MrChris
Salut !

J'ai un objet distant (implémenté dans la partie serveur):

Public Interface IGestionAccueilObjets
Function GetEmployeS() As EmployeCollection
Function GetEmploye() As Employe
End Interface

Employe est définit de la facon suivante :

<Serializable()> Public Class Employe
Public Nom As String
Public Mail As String
End Class

Et employecollection :

<Serializable()> Public Class EmployeCollection
Inherits NameObjectCollectionBase

Default Public Property Item(ByVal key As [String]) As [Employe]
Get
Return CType(Me.BaseGet(key), Employe)
End Get
Set(ByVal Value As [Employe])
Me.BaseSet(key, Value)
End Set
End Property

Public Sub Add(ByVal key As [String], ByVal value As [Employe])
Me.BaseAdd(key, value)
End Sub

End Class

J'arrive à acceder à distance à mon objet IGestionAccueilObjets
et à appeler la méthode GetEmploye().

Mais quand j'essaye la méthode GetEmployeS() j'ai l'erreur suivante :

System.Runtime.Serialization.SerializationException: Le constructeur est
introuvable pour désérialiser un objet de type
IAccueilClients.EmployeCollection.

Dois-je comprendre que la framework est capable de sérializer
EmployeCollection
mais pas de le désérializer ???

Qu'ai-je oublié ???

Merci pour votre aide !!!
MrChris

4 réponses

Avatar
Eric Mittelette[MS\)
Bonjour,

Avez vous tenté de mettre un constructeur par défaut dans la classe, car
pour désériliser, le framework a visiblement besoin d'un constructeur pour
reconstruire la collection. On peut laisser vide ce code.

HTH
Eric


"MrChris" a écrit dans le message de news:
u$im%
Salut !

J'ai un objet distant (implémenté dans la partie serveur):

Public Interface IGestionAccueilObjets
Function GetEmployeS() As EmployeCollection
Function GetEmploye() As Employe
End Interface

Employe est définit de la facon suivante :

<Serializable()> Public Class Employe
Public Nom As String
Public Mail As String
End Class

Et employecollection :

<Serializable()> Public Class EmployeCollection
Inherits NameObjectCollectionBase

Default Public Property Item(ByVal key As [String]) As [Employe]
Get
Return CType(Me.BaseGet(key), Employe)
End Get
Set(ByVal Value As [Employe])
Me.BaseSet(key, Value)
End Set
End Property

Public Sub Add(ByVal key As [String], ByVal value As [Employe])
Me.BaseAdd(key, value)
End Sub

End Class

J'arrive à acceder à distance à mon objet IGestionAccueilObjets
et à appeler la méthode GetEmploye().

Mais quand j'essaye la méthode GetEmployeS() j'ai l'erreur suivante :

System.Runtime.Serialization.SerializationException: Le constructeur est
introuvable pour désérialiser un objet de type
IAccueilClients.EmployeCollection.

Dois-je comprendre que la framework est capable de sérializer
EmployeCollection
mais pas de le désérializer ???

Qu'ai-je oublié ???

Merci pour votre aide !!!
MrChris



Avatar
MrChris
Oui, j'ai mis des sub new() partout et des MyBase.New() partout ou je
dérive.
Mais rien n'y fait.
Je sens qu'il va falloir que je me tape la sérialization/désérialisation à
la poigne...
Des exemples ???

Merci
MrChris

"Eric Mittelette[MS)" a écrit dans le message de
news: uOd%
Bonjour,

Avez vous tenté de mettre un constructeur par défaut dans la classe, car
pour désériliser, le framework a visiblement besoin d'un constructeur pour
reconstruire la collection. On peut laisser vide ce code.

HTH
Eric


Avatar
MrChris
C'est peut être parce que mon objet dérive de NameObjectCollectionBase ?
pourtant NameObjectCollectionBase implémente ISerializable.

Je Nage !!! help bloub !
MrChris
Avatar
Frederic Melantois
Bonjour,

Eric a parfaitement raison, vous avez oublié le constructeur :
Private New(ByVal info As System.Runtime.Serialization.SerializationInfo,
ByVal context As System.Runtime.Serialization.StreamingContext)

Je peux vous conseiller un tutoriel sur le remoting fait par Elise :
http://www.dotnet-tech.com/tutoriels/remoting/

et puis un tutoriel sur la sérialisation (pour l'instant en csharp;-) (ne
pas voir Que le pdf mais bien regarder les sources ) :
http://www.dotnet-tech.com/tutoriels/serialisation/

Frédéric Mélantois



"MrChris" a écrit dans le message de
news:%
Oui, j'ai mis des sub new() partout et des MyBase.New() partout ou je
dérive.
Mais rien n'y fait.
Je sens qu'il va falloir que je me tape la sérialization/désérialisation à
la poigne...
Des exemples ???

Merci
MrChris

"Eric Mittelette[MS)" a écrit dans le message de
news: uOd%
> Bonjour,
>
> Avez vous tenté de mettre un constructeur par défaut dans la classe, car
> pour désériliser, le framework a visiblement besoin d'un constructeur


pour
> reconstruire la collection. On peut laisser vide ce code.
>
> HTH
> Eric