Hallo!
Ich würder gerne eine Art Konfigurationsdatei für eine Konsolenanwendung
schreiben. Ich denk da an so was wie den Properties in Java.
Gibt es in .NET etwas vergleichbares? Hat wer einen Tipp?
Danke
"We better hurry up and start coding, there are going to be a lot of bugs to fix."
Danke, das funktioniert ja gut.
Gibt es auch noch eien einfache Möglickkeit um zu überprüfen, ob
die Datei existiert. Also das File.
Ich würde einfach mit der File- Klasse überprüfen, ob die Datei da ist.
Ich habe da noch ein kleines Problem:
Ich würder gerne in dieses Config Datei ein Art Kategorie einbauen.
Es gibt drei Kategorien: A, B, C
Funktioniert es irgendwie, dass ich das so einbaue dass ich eine Art Unterkategorie realisieren kann:
Ich könnte ja auch einfach drei neue Strings machen:
A
B
C
und dann im Configfile da wo ich den Wert benötige. "was reinschreiben" (true / false). Das ist zwar nicht so schön, aber es funktioniert.
Was ich möchte:
Kategorie.A = true
Kategorie.B = false;
Kategorie.C = false;
Und im Programm dann abfragen welche Kategorie gesetzt wurde...
Hallo,
du kannst auch eine XML-Datei verwenden und diese direkt in die Klassen serialisieren/deserialiseren mit dem XmlSerializer.
Für dein Beispiel hättest du dann eine Klasse Kategorie mit den 3 Eigenschaften.
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
Hallo wpb,
Also falls man immer nur eine Kategorie aktivieren kann (sieht man nicht aus deinem Post), solltest du es anders herum aufziehen:
Properties.Settings.AktiveKategorie = "A"; // oder so ähnlich
Möchtest du einfach drei Werte in der *.config haben könntest du ja einfach drei Werte in der *.settings-Datei anlegen:
Properties.Settings.Kategorie_A = true;
Properties.Settings.Kategorie_B = true;
Properties.Settings.Kategorie_C = true;
Möchtest du unbedingt eine Hirarchie, ginge auch folgendes:
Properties.Settings.Kategorie.A = true;
Properties.Settings.Kategorie.B = true;
Properties.Settings.Kategorie.C = true;
Dazu musst du folgende Klasse im Projekt anlegen:
namespace |x|
{
[System.Serializable]
public class Kategorie
{
public virtual bool A{get;set;}
public virtual bool B{get;set;}
public virtual bool C{get;set;}
}
}
Jetzt Legst du einen neuen Wert in der *.Setting-Datei an mit dem Namen "Kategorie" und dem Typ string (speichern).
Danach öffnest du die *.setting-Datei im VisualStudio mit dem XML-Editor (also nich mit DoppelKlick) und suchts deinen neuen Wert, dort müsste man direkt sehen wo String steht und man kann sofort den FullQualifiedName der eigenen Klasse eintragen (|x|.Kategorie).
Speichern, Schließen, normal Öffnen, Fertig.
Gruß
Juy Juka
Hallo!
Also ich bin jetzt anders vorgegange, und ich glaube ich bin schon fast bei einer Lösung:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="DownloaderYouTube.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<applicationSettings>
<DownloaderYouTube.Properties.Settings>
<setting name="searchterm" serializeAs="String">
<value>value</value>
</setting>
</DownloaderYouTube.Properties.Settings>
</applicationSettings>
</configuration>
so kann ich in Programm dann Wert zu [B]searchterm[/B] auslesen.
<configuration>
<configSections>
<section
name="MyDictionary"
type="System.Configuration.NameValueFileSectionHandler,System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</configSections>
<MyDictionary>
<add key="name1" value="value1" />
<add key="name2" value="value2" />
<add key="name3" value="value3" />
<add key="name4" value="value4" />
</MyDictionary>
</configuration>
Ich kann beides getrennt einlesen.
Und jetzt versuch ich, dass ich ein einheitliches File erstelle. Das schaff ich aber nicht.
Geht das denn überhaupt?
Hallo wpb,
warum verwendest du nicht einfach Konfigurationsdateien? Die XML-Datei kannst du mit LINQ to XML einlesen. Stichwort: LINQ to XML.
zero_x
zero_x | <span style="font-size: 10;">my</span><span style="font-size: 10;">CSharp</span><span style="font-size: 10;">.de</span> - gemeinsam mehr erreichen
Für längere Zeit inaktiv.
Hallo zero_x,
Warum sollte man ein extra File verwenden, um das man sich dan selbst kümmern muss. Das .Net-Configurationsframework kann das schon (siehe Anhang).
Gruß
Juy Juka
Hallo wpb,
Siehe Anhang.
Die *.setting-Datei hab ich so erstellt wie oben beschreiben (mit XML-Editor öffnen und so).
Gruß
Juy Juka
Hey danke!
Bin kurz vor der Lösung.
Ich habe in der Klasse Eintrag aber noch einen Fehler:
Fehler 48 "Eintrag": Membernamen dürfen nicht mit dem Namen des sie einschließenden Typs identisch sein. E:\WorkspaceVisualStidio\DownloaderYouTube\DownloaderYouTube\Eintrag.cs 10 22 DownloaderYouTube
Hallo,
deine Klasse heißt gleich wie ein Member und da meckert der Compiler. Einen von beiden msust du umbennen.
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
Hallo JuyJuka!
Erstmal danke.
Kannst dur mir vll. noch sagen, was nach der folgenden Zeile hingehört:
<Setting Name="MyDictionary" Type="JuyJuka.ConfigurationsBeispiel.Eintrag[]" Scope="Application">
<Value Profile="(Default)">
...
...
...
</value>
Und wie bist du da drauf gekommen? Hast du das gewusst, oder kann ich mit das vom Visual Studio generieren lassen...
Hallo wpb,
Gern geschehen, aber ab hier musst du selber rumprobieren und lernen.
Wie man VisualStudio dazu bringe es zu erstellen hab ich alles oben schon besrieben.
"Propertie- Datei" in C#
(Die dritte beschriebene Variante.)
Gruß
Juy Juka
Hallo!
Das Problem ist nur, dass es bei mir so aussieht:
<Value Profile="(Default)">
<ArrayOfEintrag xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Eintrag>
<Name>Name111</Name>
<Wert>Wert1</Wert>
</Eintrag>
<Eintrag>
<Name>Name2</Name>
<Wert>Wert2</Wert>
</Eintrag>
<Eintrag>
<Name>Name3</Name>
<Wert>Wert3</Wert>
</Eintrag>
</ArrayOfEintrag>
</Value>
Ich muss die Datei auch editieren können. Darum würde ich es gerne mit
< und > darstellen, dass es übersichtlicher ist.
Wenn ich die Zeichen aber ersetze, dass finktioniert das Programm nicht mehr
Hallo wpb,
Editiert wird nict in der XML-Ansicht der *.setting Datei!
Editieren kannst du:
A) in der *.setting Datei, wenn du es normal öffnest
B) in der *.config Datei (app.config oder web.config)
In beiden Dateien wird es lesbar angezeigt. 😃
Gruß
Juy Juka