2008-09-09 11 views
0

kullanarak .Net 2 ve ayarlarımı depolamanın normal yolunu kullanıyorum. Xml'ye serileştirilmiş özel nesneyi saklıyorum. Mülkün varsayılan değerini almaya çalışıyorum (ancak diğer özellikleri yeniden göndermeden). Ben kullanın:Properties varsayılan değerleri Properties.Settings.Default

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

Ama bunun yerine ValuationInput bir dizi dönmek gibi görünüyor ve bir istisna atar.

Ben çalışıyor hızlı bir hack, yapılan:

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

Ama bu gerçekten çirkin - Ben kesinlikle yazılı bir ayar tanımlamak için tüm aracını kullandığınızda, varsayılan değer seri hale getirmek istemiyoruz kendim, şu anki değeri okuduğum şekilde okumak isterim: ValuationInput valuationInput = Settings.Default.ValuationInput;

cevap

2

Bir noktada, bir şey, Xml Deserialization'ı kullanmak zorunda kalacaksınız, ister siz ister isterse sınıfın içinde bir sarıcı olsun . İş mantığınızdan "çirkin" kodu kaldırmak için her zaman bir yöntemle soyutlayabilirsiniz.

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

2

@Grzenio,

Neden nesne doğrudan yazın kullanmıyorsun? Ayarlarınızın türünü Proje Özellikleri -> Ayarlar sekmesinde ayarlayabilirsiniz. Tür sütunu için Gözat açılır menüsünü tıklayarak türünüzü seçebilirsiniz. MSDN'den

Citation:

Uygulama ayarları olarak

sahip Bu şekilde fromString/seri hale getirilebilir XML veya ToString uygulayan bir TypeConverter sahip herhangi bir veri türü saklanabilir güçlü yazılan ayarlar, yani (ValuationInput) Settings.Default.Properties ["ValuationInput"]. DefaultValue; dize yerine bir nesne döndürür.

İlgili konular