DLL soll Settings aus Application lesen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von rgomez.

    DLL soll Settings aus Application lesen

    Guten Abend,

    schreibe zur Zeit einige Libraries für meine Firma. Z.b. eine Library, um die verwendete Messgeräte (Dig. MultiMeter, Klimaschrank, Druckkalibrator,usw.) anzusteuern.
    Dazu habe ich eine Library Entities geschrieben, wo Klassen wie Drucktransmitter, Messzelle, deklariert sind, welche die eig. "Business Objekte" darstellen.
    Schreibe dazu auch eine Data-Access-Layer, die aus den Daten der Datenbank, diese Objekte generiert, da die DB ist Teil eines 3rd-party-Software, die wir als ERP benutzen.

    Also wenn ich die Daten aus der DB kriege, muss ich ein wenig Arbeit und "parsing" machen, um aus den Daten, die jeweilige Messzelle, Transmitter oder was auch immer zu machen.

    Diese Libraries werden jetzt (und in der Zukunft in noch mehr) in verschiedene Apps benutzt.

    Bis jetzt habe ich alles als Parametern an die Library übergeben, denke aber evtl. ein anderer Weg wäre eleganter.
    Meine Wille ist jetzt, dass die Dll's auf die ApplicationSettings, der App wo sie grad benutzt werden zugreifen und so Sachen wie Connection Strings, ComPorts, usw. auslesen.

    Z.B das selbe Programm läuft auf 2 versch. PC habe, beide verbunden mit Messgeräte der selben Sorte, aber die ComPorts der Geräte unterscheiden sich vom Computer zu Computer. Jetzt würde ich im PC A, die richtige Ports einstellen, im PC B das selbe, und die Control DLL, liest bei jedem die Settings und arbeitet nach diesen.
    Eine andere Verwendung wäre z.B, alle die Programme die auf meinem PC laufen, greifen auf meine lokale DB und nicht auf den Server. Die Data Access Lib würde die ConnectionString-Setting in meinem App-Settings auslesen und fertig.

    Nach etwas lesen und suchen denke, dass der richtige Weg ist mit System.Configuration.ConfigurationManager.AppSettings
    Ich habe bist jetzt ein Test mit einer dummy(n?) Library und ConfigurationsManager gemacht, schaffe aber nicht die Settings zu lesen.
    Habe folgendes gemacht:
    • Library erstellt mit einer Klasse mit nur einer Methode

    VB.NET-Quellcode

    1. Public Class Dummy
    2. Public Function GetSettings () As NameValueCollection
    3. Return System.Configuration.ConfigurationManager.AppSettings
    4. End Function
    5. End Class
    • WinForms erstellt, Library referenziert, einige Settings erstellt
    • Form1 Code geschrieben

    VB.NET-Quellcode

    1. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    2. Dim dummy As New Dummy()
    3. Dim settings as NameValueCollection=dummy.GetSettings()
    4. Console.WriteLine("KEY VALUE")
    5. For Each item In settings.AllKeys
    6. Console.WriteLine("{0,-10} {1}",item,settings(item))
    7. Next
    8. End Sub


    Leider settings ist leer. Also etwas mache ich hier falsch...

    Life doesn't give you a datasheet. Sometimes the docs are wrong and you have to try it.

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „rgomez“ ()

    @rgomez Bei mir kommt da selbst ohne DLL nix raus.
    Die Settings musst Du selbst anlegen, gugst Du hier.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    das Haupt / Helpers - Problem.
    Deine Lib ist ein Helper, und helpt der App, die sie einbindet.
    Daher ist nicht vorgesehen, dass die Lib die Settings der App ausliest.
    Und halte ich für sehr fragwürdiges Design, da iwas hacken zu wollen.

    Was hingegen glaub vergleichsweise "sauber" wäre, wenn die App der Dll in irgendeiner Form die benötigten Infos übergibt.
    Meinetwegen auch tatsächlich als Config-Objekt (oder Datei or whatever), und die Dll versucht das dann selbst iwie zu parsen.
    Danke für Ihre Antworten. Ich glaube ich werde erstmal bei Parameter übergeben lassen, und warten bis ich 3 Grunde habe und es zu ändern, so wie ich es damals in einem design patterns course gelernt habe.
    Life doesn't give you a datasheet. Sometimes the docs are wrong and you have to try it.