i couronne Je vois que existe-t-il un moyen d'exclure des types spécifiques de la sérialisation? P> sgen code> contre mon assemblage avec une tonne métrique de types. Je veux exclure 2 types de la sérialisation. Je ne semble pas être capable de trouver un moyen de le faire. P>
sgen code> a un interrupteur
/ type code> pour spécifier un type spécifique, mais rien pour exclure un type spécifique. P>
4 Réponses :
Je ne sais pas si vous la recherchez, mais vous pouvez exclure vos propres classes de la sérialisation en mentionnant [non-sérialisée] avant la définition de la classe. Donc, si vous souhaitez exclure un type spécifique, vous devrez hériter de lui et créer votre propre classe
[NonSerialized] public class Point { public int x, y; }
Ce code ne doit pas compiler, car les seules cibles de l'attribut code> code> sont les champs.
Erreur 2 attribut 'non-séralized' n'est pas valide sur ce type de déclaration. Il n'est valable que sur les déclarations «champ».
En plus de mettre les types, vous souhaitez exclure dans un assemblage différent, vous ne pouvez pas exclure les types de la génération de sérialisateur. P>
D'autres affiches ont mis au point des possibilités supplémentaires pour exclure des types spécifiques, avec une applicabilité variable basée sur votre cas d'utilisation. P>
Je sais que c'est vieux. Mais qu'en est-il de supprimer le paramètre moins constructeur? Qui semble prévenir la classe de traitement de SGEN.
@Tom Oui, cela fonctionne pour moi. Envisagez de poster une réponse respective - je vais uppote.
Vous pouvez essayer de changer l'accès des classes que vous souhaitez exclure de la sérialisation XML en marquant la classe comme interne code>, puis sgen.exe devrait ignorer cette classe.
internal class NotToBeSerialized
{
...
}
Mais je dois exclure la génération pour les types que je dois utiliser depuis une autre assemblée.
Pour éviter que la classe soit incluse dans le traitement de SGen, assurez-vous qu'il n'a pas de constructeur sans paramètre. P>
Comme expliqué par la réponse à cette question Pourquoi la classe XML-Serializable a besoin d'un constructeur sans paramètre , la sérialisation nécessite un paramètre de moins constructeur, de tout niveau d'autorisation, de travailler. Faire du constructeur naturel privé n'est pas suffisant fort>, pour exclure si du traitement de SGEN. P>
Peut-être que je n'ai pas compris votre question, mais
sgen code> ne génère que l'assemblage de sérialisation. Quel est le problème d'avoir deux autres classes là-bas?
Si vous souhaitez le faire, car SGen se plaint des noms de classe identiques, ouvrez votre fichier .csproj et vous pouvez trouver FALSE SGENUSUSEPROXYTYPES> CODE> Tags. J'ai enlevé ceux en quittant sur GenerateSeralization Sembles> code> seul et les erreurs sont parties.