Valeurs par défaut de la propriété à l'aide de Properties.Settings.Default

StackOverflow https://stackoverflow.com/questions/51700

  •  09-06-2019
  •  | 
  •  

Question

J'utilise .Net 2 et la manière normale de stocker mes paramètres.Je stocke mon objet personnalisé sérialisé au format XML.J'essaie de récupérer la valeur par défaut de la propriété (mais sans réinitialiser les autres propriétés).J'utilise:

ValuationInput valuationInput = (ValuationInput) Settings.Default.Properties["ValuationInput"].DefaultValue;

Mais il semble renvoyer une chaîne au lieu de ValuationInput et lève une exception.

J'ai fait un hack rapide, qui fonctionne très bien :

string valuationInputStr = (string) 
Settings.Default.Properties["ValuationInput"].DefaultValue;
XmlSerializer xmlSerializer = new XmlSerializer(typeof(ValuationInput));
ValuationInput valuationInput = (ValuationInput) xmlSerializer.Deserialize(new StringReader(valuationInputStr));

Mais c'est vraiment moche - lorsque j'utilise tous les outils pour définir un paramètre fortement typé, je ne veux pas sérialiser moi-même la valeur par défaut, j'aimerais la lire de la même manière que je lis la valeur actuelle : ValuationInput valuationInput = Settings.Default.ValuationInput;

Était-ce utile?

La solution

À un moment donné, quelque chose, quelque part devra utiliser la désérialisation XML, que ce soit vous ou un wrapper à l'intérieur de la classe de paramètres.Vous pouvez toujours le résumer dans une méthode permettant de supprimer le code "laid" de votre logique métier.

public static T FromXml<T>(string xml)
{
    XmlSerializer xmlser = new XmlSerializer(typeof(T));
    using (System.IO.StringReader sr = new System.IO.StringReader(xml))
    {
        return (T)xmlser.Deserialize(sr);
    }
}

http://www.vonsharp.net/PutDownTheXmlNodeAndStepAwayFromTheStringBuilder.aspx

Autres conseils

@Grzenio,

Pourquoi n'utilisez-vous pas directement votre type d'objet ?Vous pouvez définir le type de votre paramètre dans l'onglet Propriétés du projet-> Paramètres.Vous pouvez sélectionner votre type en cliquant sur Parcourir dans la liste déroulante de la colonne Type.

Citation de MSDN :

Les paramètres de l'application peuvent être stockés comme tout type de données qui est sérialisable XML ou a un typonverter qui implémente Tostring / FromString

De cette façon, vous pouvez avoir des paramètres fortement typés, c'est-à-dire(ValuationInput) Settings.Default.Properties["ValuationInput"].DefaultValue;renverra un objet au lieu d'une chaîne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top