(Toi t'as fais du java

)
Alors ... l'XMLSerializer ne serialize pas les membres privés pour préserver le contrôle sur les accès à la variable, je m'explique. En .net généralement on utilise des propriétés pour chaque variable qu'on veut rendre accessible :
private int maVar;
public int MaVar
{
get { return maVar; }
set { maVar = value; }
}
Ceci permet de manipuler this.maVar en interne de la manière que l'on souhaite, et protéger ou non l'accès externe.
Tu peux donc garder tes membres privés et créer des propriétés pour y accéder. Ce sont ces propriétés qui vont ensuite être sérializées.
Sinon SoapFormatter est effectivement un objet permettant d'aussi sérialiser, mais différement. Il répond aux normes SOAP 1.1 et va sortir de l'XML certes, mais au format SOAP et non personalisable. Il permet par contre de sérializer du privé, des références circulaires, etc. Il est par contre moins performant que l'XMLSerializer ^^