Laden...

"Propertie- Datei" in C#

Erstellt von wpb vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.708 Views
W
wpb Themenstarter:in
117 Beiträge seit 2005
vor 13 Jahren
"Propertie- Datei" in C#

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

F
155 Beiträge seit 2009
vor 13 Jahren

"We better hurry up and start coding, there are going to be a lot of bugs to fix."

W
wpb Themenstarter:in
117 Beiträge seit 2005
vor 13 Jahren

Das schaut recht nett aus.
Ich schaus mir an...

W
wpb Themenstarter:in
117 Beiträge seit 2005
vor 13 Jahren

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.

W
wpb Themenstarter:in
117 Beiträge seit 2005
vor 13 Jahren

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...

6.911 Beiträge seit 2009
vor 13 Jahren

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!"

2.187 Beiträge seit 2005
vor 13 Jahren

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

W
wpb Themenstarter:in
117 Beiträge seit 2005
vor 13 Jahren

Hallo!

Also ich bin jetzt anders vorgegange, und ich glaube ich bin schon fast bei einer Lösung:

  1. "Normaler" String Wert:

<?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.

  1. Die Datei für NameValue

<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?

1.044 Beiträge seit 2008
vor 13 Jahren

Hallo wpb,

warum verwendest du nicht einfach Konfigurationsdateien? Die XML-Datei kannst du mit LINQ to XML einlesen. Stichwort: LINQ to XML.

zero_x

2.187 Beiträge seit 2005
vor 13 Jahren

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

W
wpb Themenstarter:in
117 Beiträge seit 2005
vor 13 Jahren

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

6.911 Beiträge seit 2009
vor 13 Jahren

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!"

W
wpb Themenstarter:in
117 Beiträge seit 2005
vor 13 Jahren

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...

2.187 Beiträge seit 2005
vor 13 Jahren

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

W
wpb Themenstarter:in
117 Beiträge seit 2005
vor 13 Jahren

Hallo!

Das Problem ist nur, dass es bei mir so aussieht:


      <Value Profile="(Default)">
                    &lt;ArrayOfEintrag xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;
                        &lt;Eintrag&gt;
                            &lt;Name&gt;Name111&lt;/Name&gt;
                            &lt;Wert&gt;Wert1&lt;/Wert&gt;
                        &lt;/Eintrag&gt;
                        &lt;Eintrag&gt;
                            &lt;Name&gt;Name2&lt;/Name&gt;
                            &lt;Wert&gt;Wert2&lt;/Wert&gt;
                        &lt;/Eintrag&gt;
                        &lt;Eintrag&gt;
                            &lt;Name&gt;Name3&lt;/Name&gt;
                            &lt;Wert&gt;Wert3&lt;/Wert&gt;
                        &lt;/Eintrag&gt;
                    &lt;/ArrayOfEintrag&gt;
      </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

2.187 Beiträge seit 2005
vor 13 Jahren

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