Laden...

App.config mit eigener Configsection - es wird nicht alles zurückgegeben

Erstellt von inflames2k vor 14 Jahren Letzter Beitrag vor 14 Jahren 2.196 Views
inflames2k Themenstarter:in
2.298 Beiträge seit 2010
vor 14 Jahren
App.config mit eigener Configsection - es wird nicht alles zurückgegeben

Hallo,

da ich momentan eine Anwendung schreibe, welche Zugriff auf eine Datenbank hat über meherere gespeicherte Prozeduren (Die sich ändern können auch im Namen) hab ich mir überlegt, dafür eine eigene SectionGroup in der AppConfig zu erstellen. Allerdings wird mir nicht alles zurück gegeben, was ich brauch.

Die ConfigSection sieht wie folgt aus:


<Procedures>
     <ChangeStateProcedure ProcedureName="InsertTable_ChangeState" />
     <GetStatesFilterProcedure ProcedureName="SelectTable_StatesFilter"  Filter ="4" />
     ...
</Procedures>

Ich denke man erkennt anhand der 2. Zeilen, wie die ConfigSectionGroup aufgebaut ist.

Definiert sind diese Sections als SingleTagSectionHandler. Nun wollte ich diese Sections wie gesagt auslesen.

Folgendes hab ich probiert:


	System.Collections.IDictionary procedureSets = (System.Collections.IDictionary)System.Configuration.ConfigurationSettings.GetConfig ("Procedures/GetStatesFilterProcedure");		

Der Anschließende Datenbankaufruf liefert nichts zurück, da der Filter nicht mit eingelesen wird. - Was ich schon recht merkwürdig finde.

Denn schau ich mir den Inhalt des Dictionary an, sieht es wie folgt aus:


ProcedureName = "SelectTable_StatesFilter"
Filter = ""

Hat jemand eine Ahnung woran das liegen könnte oder wie ich es eventuell besser Lösen könnte?

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

2.187 Beiträge seit 2005
vor 14 Jahren

Hallo inflames2k,

Warum lässt du VisualStudio das ganze nicht machen?
Du kannst auch eigene (serialisierbare) Typen von VisualStudio in die App.config einbauen lassen.

Gruß
Juy Juka

inflames2k Themenstarter:in
2.298 Beiträge seit 2010
vor 14 Jahren

Naja da gäbs 2 Gründe, zum ersten weil ich nicht wüsste wie (handelt sich ja vom Prinzip her nicht um eine App.Config sondern die web Variante für einen Webservice. - Was sich aber von der Sache her nicht viel nimmt.
Und zum zweiten, weil ichs schön übersichtlich eben in der eigenen Section haben wollte / möchte, da es sich um 8 Prozeduren handelt.

Es funktioniert nun, woran es auch immer vorhin lag. - Werd das mal beobachten. Falls ich herausgefunden hab warum es vorhin nicht funktionierte, jetzt aber funktioniert geb ichs bekannt. 😉

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

inflames2k Themenstarter:in
2.298 Beiträge seit 2010
vor 14 Jahren

Ich muss hier nochmal einhaken.

Ich wollt mir nun eine Klasse erstellen, welche bei Initialisierung eine bestimmte ConfigSection automatisch einliest. - Leider find ich aber trotz ewigem suchen keinen Weg die komplette ConfigSection einzulesen.

Was ich mir vorgestellt hab ist folgendes:


class ProcedureConfigurationReader : Dictionary<String, IDictionary>
{	

	public ProcedureConfigurationReader()
	{
		// hier sollte das initialisieren der ConfigurationSectionGroup stattfinden
		foreach (Configuration.ConfigurationSection section  in configGroup.Sections)
		{
			this.Add(section.SectionInformation.Name, (IDictionary)ConfigurationManager.GetSection("Procedures\" + section.SectionInformation.Name));
			}			
		}
	}

Ich komm auf keinen grünen Zweig bei der Initialisierung der Sectiongroup. - Ich gehe davon aus, wenn ich diese Initialisiert habe, sollte der Rest funktionieren.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

2.187 Beiträge seit 2005
vor 14 Jahren

Hallo inflames2k,

weil ich nicht wüsste wie

Nur zur vollständigkeit:

  1. Projekt -> Hinzufügen -> Neues Element -> Einstellungsdatei (= Neue Section).
  2. Neue Settings-Datei öffnen.
  3. In der Typ-Spalte die ComboBox öffnen und auf Durchsuchen... clicken.
  4. In der TextBox des Dialogs den FullQualified Name der zu serialisierenden Klasse eintippen.
    (Speichern)
    Wenn man eine Auflistung (ein Array) der Klasse haben will, muss man etwas mehr aufwand treiben:
  5. *.Settings-Datei -> Rechts-Click -> Öffnen mit -> XmlEditor
  6. Den Klassen-Namen suchen und dort [] anfügen.
    (Speichern)

Gruß
Juy Juka

456 Beiträge seit 2007
vor 14 Jahren

Ich mache das immer auf die "althergebrachte Art" mit IConfigurationSectionHandler - hatte damit noch nie Probleme. Bekomme eben den kompletten Knoten und muss mich halt dann selbst ums Mapping kümmern.