Springen naar inhoud


- - - - -
VS 2015

Runtime Properties In Class Zoals My.settings

VS2019 runtime properties

  • Log in a.u.b. om te beantwoorden
Er zijn 6 reacties in dit onderwerp

#1 Damic

Damic

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 677 berichten
    Laatst bezocht gisteren, 20:41
  • LocatieMechelen (BE)

Geplaatst op 27 juli 2019 - 17:59

Voor mijn programma Tray Streamer (en misschien andere) wil ik mijn programma meer portable maken (= minder afhankelijk maken van de Windows default directory structuur) en dan moet je iets met je my.settings doen want daar heb je niet echt controle over waar dat ie dat zet. Vroeger deden we dat via INI-bestanden maar dat is zo 1990 :) en vermits ik nu toch een db heb kan ik beter een tabel aanmeken en daar de instellingen inzetten.
Maar nu zou ik graag de gegevens kunnen aanroepen zoals je dat met de my.settings kunt, dus elke name is dus een property maar dit moet dus dynamisch kunnen want Microsoft doet dit ook met hun my.settings (refresh/save/...)

Nu heb ik het gewoon via simpele functies gedaan, maar dat is maar meh en moet ik heel het programma doorgaan.

Iemand een idee hoe ze dat doen?

#2 Dirk Andries

Dirk Andries

    Guru Developer

  • Leden
  • PipPipPipPipPipPip
  • 1164 berichten
    Laatst bezocht
  • LocatieGent

Geplaatst op 27 juli 2019 - 19:25

Bericht bekijkenDamic, op 27 juli 2019 - 17:59, zei:

Iemand een idee hoe ze dat doen?
Ja, jij ook.
Kijk naar hun code in My.Settings.
Bijlage  MyProject.png   17,01K   5 downloads

Bijlage  MyCode.png   92,32K   5 downloads

#3 Damic

Damic

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 677 berichten
    Laatst bezocht gisteren, 20:41
  • LocatieMechelen (BE)

Geplaatst op 27 juli 2019 - 19:31

Ha ik dacht al dat ik dat ergens had gezien, moest even zoeken want standaard zie je die bestanden niet. Je moet "Show All files" aanklikken.

Thx mate :)

Edit: die laten dat dus lijken dat ze dat dynamisch doen maar is gewoon dus een bestand waar alles instaat :(

Veranderd door Damic, 27 juli 2019 - 19:34.


#4 Dirk Andries

Dirk Andries

    Guru Developer

  • Leden
  • PipPipPipPipPipPip
  • 1164 berichten
    Laatst bezocht
  • LocatieGent

Geplaatst op 27 juli 2019 - 20:36

Bericht bekijkenDamic, op 27 juli 2019 - 19:31, zei:

Ha ik dacht al dat ik dat ergens had gezien, moest even zoeken want standaard zie je die bestanden niet. Je moet "Show All files" aanklikken.

Thx mate :)

Edit: die laten dat dus lijken dat ze dat dynamisch doen maar is gewoon dus een bestand waar alles instaat :(
Ja. Maar dat is enkel de (Visual Basic) My namespace die er boven hangt. Het resources mechanisme dat er onder zit is "dynamisch". Het gebruikt gewoon een collectie met keys en values die worden geserialiseerd. Je kan dus hetzelfde concept gebruiken en serializeren naar je databank.
Dus: maak een klasse die kan bewaren en ophalen, @runtime de settings kan bijhouden (kan allemaal heel simpel met een Datatable). Gebruik de eventhandlers uit de code van de My Settings om automagisch te bewaren en te laden. Klaar.

#5 Damic

Damic

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 677 berichten
    Laatst bezocht gisteren, 20:41
  • LocatieMechelen (BE)

Geplaatst op 27 juli 2019 - 20:52

Mmmh dat moet ik eens in een toekomstige versie bekijken. Eerst zien dat de huidige class "bug" vrij is :+

#6 Dirk Andries

Dirk Andries

    Guru Developer

  • Leden
  • PipPipPipPipPipPip
  • 1164 berichten
    Laatst bezocht
  • LocatieGent

Geplaatst op 28 juli 2019 - 11:24

Bericht bekijkenDamic, op 27 juli 2019 - 20:52, zei:

Mmmh dat moet ik eens in een toekomstige versie bekijken. Eerst zien dat de huidige class "bug" vrij is :+

Je kan ook gewoon een SettingsProvider klasse voorzien:
Creating a Custom Settings Provider
Create a Custom Settings Provider to Share Settings Between Applications

Bovendien zou ik me niet te druk maken over het "dynamisch" aspect: als je code geen weet heeft van een bepaalde setting is het toch redelijk zinloos een setting dynamisch bij te maken?
Als je louter bedoelt dat je ze kan overschrijven dat kan altijd door de waarde in het .exe.config bestand te wijzigen (xml), de waarde daar krijgt voorrang.
Voor portable versies en/of versies waar je @runtime ook wil overschrijven: zie artikels/code in de links.

#7 Damic

Damic

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 677 berichten
    Laatst bezocht gisteren, 20:41
  • LocatieMechelen (BE)

Geplaatst op 30 juli 2019 - 19:40

Dirk: met dynamisch bedoel ik eerder de manier waarop je je settings kunt aanspreken en dat is gedaan met die get/set blokken. Als ik dat dynamisch zou kunnen maken dan moet ik die SetValue() en GetValue() niet meer gebruiken
Yes het werkt allé niet hoe je het kan via my.settings maar toch niet slecht.

ik heb:
Add()
GetValue()
SetValue()
Reset()
Reload()
Save()


Ik zal zien dat ik een demo project kan maken :) want ik vermoed dat er wel wat dingen anders/sneller kunnen ;)

Edit DemoProject toegevoegd, het is niet perfect en er zitten nog wel wat rariteiten in (bvb .add() is beter dat je dat vast in programmeerd), maar als je daar voorbij ziet is het wel geslaagd

Bijgevoegde Bestanden







Ook met taq VS 2015, VS2019, runtime properties voorzien

0 gebruiker(s) lezen dit onderwerp

0 lid(leden), 0 bezoeker(s), 0 anonieme gebruikers

Inloggen


[VS 2015] Untitled 1

Met dank aan Jürgen voor de jarenlange inzet van visualbasic.be (anno dec 2000)
Met dank aan Mike en Ronneke voor de jarenlange inzet van vbib.be (anno dec 2010)
Met dank aan PascalBianca voor de jarenlange inzet van vbib.be (anno dec 2016)