OVH Cloud OVH Cloud

Sérialisation d'un objet

4 réponses
Avatar
ShadowFil
Bonjour,

J'ai 2 questions sur la sérialisation d'un objet marqué avec l'attribut
[Serializable] :

1) Est-ce que tout le code de la classe est transmis avec un objet sérialisé
ou seulement les données membres sont sérialisées ? En fait, est-ce que, une
fois l'objet reçu sur un autre ordinateur, je peux appeller ses méthodes et
propriétés, sans posséder la Dll où il est définit ?

2) Est-ce que tous les objets d'un graphique d'objet doivent être marqués
avec l'attribut [Serializable] pour que ça marche, ou seul l'objet qui est à
l'origine de la sérialisation doit être marqué avec l'attribut
[Serializable].

Par exemple :
Si j'ai une classe A qui est associée à une classe B, et que seule la classe
A est marquée avec l'attribut [Serializable], comme ceci :

[Serializable]
class A
{
string data1 = "objet A";
B objB = new B();
}

class B
{
int data2 = 2;
string data3 = "objet B";
}

Si la classe A est sérialisée, la classe B va aussi être automatiquement
sérialisée puisqu'elle fait partie du graphique d'objets de A.

Est-ce que B doit aussi être marqué avec l'attribut [Serializable] ou ce
n'est pas nécessaire ?

4 réponses

Avatar
Patrice Manac'h
Bonjour,

seules les données sont sérialisées. Sur l'autre machine, soit vous avez la
DLL originale, soit il est possible de générer un "proxy" qui ne mime que
les données.

Cordialement,

P. Manac'h
MCS France

"ShadowFil" wrote in message
news:
Bonjour,

J'ai 2 questions sur la sérialisation d'un objet marqué avec l'attribut
[Serializable] :

1) Est-ce que tout le code de la classe est transmis avec un objet


sérialisé
ou seulement les données membres sont sérialisées ? En fait, est-ce que,


une
fois l'objet reçu sur un autre ordinateur, je peux appeller ses méthodes


et
propriétés, sans posséder la Dll où il est définit ?

2) Est-ce que tous les objets d'un graphique d'objet doivent être marqués
avec l'attribut [Serializable] pour que ça marche, ou seul l'objet qui est


à
l'origine de la sérialisation doit être marqué avec l'attribut
[Serializable].

Par exemple :
Si j'ai une classe A qui est associée à une classe B, et que seule la


classe
A est marquée avec l'attribut [Serializable], comme ceci :

[Serializable]
class A
{
string data1 = "objet A";
B objB = new B();
}

class B
{
int data2 = 2;
string data3 = "objet B";
}

Si la classe A est sérialisée, la classe B va aussi être automatiquement
sérialisée puisqu'elle fait partie du graphique d'objets de A.

Est-ce que B doit aussi être marqué avec l'attribut [Serializable] ou ce
n'est pas nécessaire ?



Avatar
ShadowFil
Ok pour la 1ère question.

Est-ce quelqu'un aurait une réponse à la 2ème question ?

Merci.
Avatar
ShadowFil
Ok pour la 1ère question.

Est-ce que quelqu'un aurait une réponse à la 2ème question ?

Merci



"Patrice Manac'h" a écrit :

Bonjour,

seules les données sont sérialisées. Sur l'autre machine, soit vous avez la
DLL originale, soit il est possible de générer un "proxy" qui ne mime que
les données.

Cordialement,

P. Manac'h
MCS France

"ShadowFil" wrote in message
news:
> Bonjour,
>
> J'ai 2 questions sur la sérialisation d'un objet marqué avec l'attribut
> [Serializable] :
>
> 1) Est-ce que tout le code de la classe est transmis avec un objet
sérialisé
> ou seulement les données membres sont sérialisées ? En fait, est-ce que,
une
> fois l'objet reçu sur un autre ordinateur, je peux appeller ses méthodes
et
> propriétés, sans posséder la Dll où il est définit ?
>
> 2) Est-ce que tous les objets d'un graphique d'objet doivent être marqués
> avec l'attribut [Serializable] pour que ça marche, ou seul l'objet qui est
à
> l'origine de la sérialisation doit être marqué avec l'attribut
> [Serializable].
>
> Par exemple :
> Si j'ai une classe A qui est associée à une classe B, et que seule la
classe
> A est marquée avec l'attribut [Serializable], comme ceci :
>
> [Serializable]
> class A
> {
> string data1 = "objet A";
> B objB = new B();
> }
>
> class B
> {
> int data2 = 2;
> string data3 = "objet B";
> }
>
> Si la classe A est sérialisée, la classe B va aussi être automatiquement
> sérialisée puisqu'elle fait partie du graphique d'objets de A.
>
> Est-ce que B doit aussi être marqué avec l'attribut [Serializable] ou ce
> n'est pas nécessaire ?
>





Avatar
Faust
> 2) Est-ce que tous les objets d'un graphique d'objet doivent être marqués
avec l'attribut [Serializable] pour que ça marche, ou seul l'objet qui est Ã
l'origine de la sérialisation doit être marqué avec l'attribut
[Serializable].



de mémoire, il faut qu'ils soient tous marqués serialisable

--
Mephitiquement votre,
Faust
ICQ #161252577