J'ai le code suivant:Pourquoi une erreur de sérialisation se produit-elle?
class Program
{
static void Main(string[] args)
{
string xml = @"<ArrayOfUserSetting>
<UserSetting>
<Value>Proposals</Value>
<Name>LastGroup</Name>
</UserSetting>
<UserSetting>
<Value>Visible</Value>
<Name>WidgetsVisibility</Name>
</UserSetting>
</ArrayOfUserSetting>";
List<UserSetting> settings =
GetObjFromXmlDocument<List<UserSetting>>(xml);
}
public static T GetObjFromXmlDocument<T>(string xml)
{
T customType;
XmlSerializer serializer = new XmlSerializer(typeof(T));
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.LoadXml(xml);
using (XmlNodeReader xmlNodeReader = new XmlNodeReader(xmlDocument))
{
customType = (T)serializer.Deserialize(xmlNodeReader);
}
return customType;
}
}
[Serializable]
public class UserSetting
{
public string Value { get; set; }
public string Name { get; set; }
}
Le code fonctionne très bien et l'appel à une collection GetObjFromXmlDocument cède la liste. Cependant, je reçois toujours une exception de première chance de type System.IO.FileNotFoundException
dans mscorlib.dll, lorsque XmlSerializer serializer = new XmlSerializer(typeof(T));
est exécutée. Je suis donc passé en Debug/Exception et j'ai activé les Assistants de mise au point gérés. Je suis arrivé ce qui suit sur cette ligne:
L'assemblage avec « mscorlib.XmlSerializers » nom d'affichage a échoué à charger dans le contexte de liaison « LoadFrom » du AppDomain avec ID 1. La cause de l'échec a été: système. IO.FileNotFoundException: Impossible de charger le fichier ou l'assembly 'mscorlib.XmlSerializers, Version = 2.0.0.0, Culture = neutre, PublicKeyToken = b77a5c561934e089' ou l'une de ses dépendances. Le système ne peut pas trouver le fichier spécifié. Nom du fichier: 'mscorlib.XmlSerializers, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089'
Quelqu'un peut-il expliquer pourquoi cela se passe? Y at-il quelque chose que je pourrais faire à la classe UserSetting
pour faire disparaître le problème? L'application est assez sensible aux performances et je préfère ne pas avoir l'exception.
Merci, c'est très utile! Plus d'informations sur le problème, si vous voyez cela pendant le débogage, appuyez simplement sur F5 et votre programme continuera (il ne tombera pas en panne ... au moins pas b/c de cela). –