gconf vs XmlSerializer [mono/c#]

Permalänk
Medlem

gconf vs XmlSerializer [mono/c#]

hej alla glada, jag undrar om det är någon som vet vad som är bäst och änklast att använda för att spara inställningar.

har kollat på många tutorials men fattar inte ett piss, jag har även försökt att kollat på koden till banshee och tomboy, och när fattar jag ännu mindre..

jag vill nämligen skapa en klass som läser data från en xml fil och sedan sätter det som bakgrunds färg och förgrunds (text) färg på en Gtk.textView och sedan skall jag kunna sätta dem med in annan widget, som jag måste skapa.

är det någon med erfarenhet av c#/mono och XML eller gconf som kan skriva en liten tutorial, så att säga, som förklarar vad allt gör?

såhär långt har jag kommit med klassen, men vet inte riktigt vad jag egentligen gör.

using System; using System.IO; using System.Xml; using System.Xml.Serialization; namespace GTKtest2 { public class preferences{ static string xmlFile = "./settings.xml"; //altså i samma mapp som exe filen public getPreferences(string fgColor, string bgColor){ FileStream fs = new FileStream(xmlFile, null); XmlSerializer xs = new XmlSerializer(); xs.Deserialize(fs); //0_o -- jag vet inte vad jag gör.... } public setPreferences(string fgColor, string bgColor){ //do stuff } } }

Visa signatur

@gegoxaren på identi.ca
min personliga Blag ^_^
#python #cSharp #php #sqlite #freetard #loonix

Permalänk

Så som jag har gjort detta tidigare har jag haft en Settings klass som jag har en Load och en Save-funktion på, paramterlösa. Sen på load så kör jag en deserialize och returnerar ett nett objekt av typen settings men på save så kör jag en serialize

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk
Medlem

va?
det var juh det som jag frågade.
0_o..
varken msdn eller mono documention¹ hjälpte mig mycket på vägen att åstadkomma detta.
alla exempel jag har kollat på är specifika och inte generika, utan någon kommentarer i koden.

¹ http://www.go-mono.com/docs/index.aspx?link=T%3ASystem.Xml.Se...

Visa signatur

@gegoxaren på identi.ca
min personliga Blag ^_^
#python #cSharp #php #sqlite #freetard #loonix

Permalänk

Det som jag skrev är ju väldigt enkelt att göra, förutsatt att man kan XMLSerializer, och den är väldokumenterad...

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk
Medlem

bha...

hittade något i en bok nu, får se om det fungerar.

Visa signatur

@gegoxaren på identi.ca
min personliga Blag ^_^
#python #cSharp #php #sqlite #freetard #loonix

Permalänk
Medlem

såhär blev rusultatet:

using System; using System.IO; using System.Xml; using System.Xml.Serialization; namespace GTKtest2 { public struct settn{ //thees are set so change the fg and bg colors... //you must call setPreferences() so change them. //and call getPrefrences to get them. public string fgColor; public string bgColor; } public class preferences{ static string xmlFile = "./settings.xml"; settn data; public void getPreferences(){ FileStream fs = new FileStream(xmlFile, FileMode.Open); XmlSerializer xs = new XmlSerializer(typeof(settn)); if(File.Exists(xmlFile)){ using(fs){ data = (settn)xs.Deserialize(fs); } }else{ data = new settn(); } } public void setPreferences(){ StreamWriter sw = new StreamWriter(xmlFile); XmlSerializer xs = new XmlSerializer(typeof(settn)); using(sw){ xs.Serialize(sw, data); } } } }

Visa signatur

@gegoxaren på identi.ca
min personliga Blag ^_^
#python #cSharp #php #sqlite #freetard #loonix

Permalänk

Såhär ser min ut;

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml.Serialization; using System.IO; using System.Reflection; public class Settings { private static string ConfigFile { get { return Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + @"+ config.xml"; } } #region properties public string Setting { get; set; } #endregion /// <summary> /// Saves the settings to the Xml-file /// </summary> public void Save() { XmlSerializer serializer = new XmlSerializer(typeof(Settings)); using (TextWriter reader = new StreamWriter(ConfigFile)) { serializer.Serialize(reader, this); } } /// <summary> /// Reloads the settings from the Xml-file /// </summary> /// <returns>Settings loaded from file</returns> public static Settings Load() { XmlSerializer serializer = new XmlSerializer(typeof(Settings)); using (TextReader reader = new StreamReader(ConfigFile)) { return serializer.Deserialize(reader) as Settings; } } }

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk
Medlem

Om det är typiska konfigurerings-settings så använd den inbygga app.config-filen för att spara inställningarna istället. Då kommer den lägga sig på rätt ställe och .net kommer ta hand om öppna/spara mm.

Tyvärr har jag ingen bra referens men klassen som du bör använda kan man läsa om här: http://msdn.microsoft.com/en-us/library/system.configuration....

Visa signatur

AK47s for everyone! - Angry mob
Since NaN /= NaN, I think, we should decipher 'NaN' as 'Not a NaN' - Miguel Mitrofanov
(Varför är människan så benägen att tro på Gud?) Antagligen har det lönat sig och evolutionen har drivit fram sådana hjärnor. - Anon

Permalänk
Citat:

Ursprungligen inskrivet av vb
Om det är typiska konfigurerings-settings så använd den inbygga app.config-filen för att spara inställningarna istället. Då kommer den lägga sig på rätt ställe och .net kommer ta hand om öppna/spara mm.

Tyvärr har jag ingen bra referens men klassen som du bör använda kan man läsa om här: http://msdn.microsoft.com/en-us/library/system.configuration....

Den funkar alldeles utmärkt i de flesta fall. Anledningen till att jag har skrivit en egen är dels för att den ska vara editerabar direkt i notapad samt att den ska gå att dela mellan olika applikationer

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase