Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Wie kann ich zur Laufzeit neue Properties in ein Objekt hinzufügen?
CombatKarl
myCSharp.de - Member

Avatar #avatar-4152.jpg


Dabei seit:
Beiträge: 36
Herkunft: München

Themenstarter:

Wie kann ich zur Laufzeit neue Properties in ein Objekt hinzufügen?

beantworten | zitieren | melden

Hallo zusammen,

als Beispiel habe ich folgendes Model:


    public class CarModel : ViewModelBase
    {
        public string Prop_1 { get; set; }
        public string Prop_2 { get; set; }
        public string Prop_3 { get; set; }
        public string Prop_4 { get; set; }
    }

Das MainViewModel sieht folgendermaßen aus:


    public class MainViewModel : ViewModelBase
    {
        public CarModel myCar = new CarModel();
    }

Jetzt die Frage:

Ist es möglich auf die einzelnen Eigenschaften des Models zuzugreifen, auch wenn sich die Zahl ändert und durch ein string oder int übergeben wird ? Ich denke dabei an so etwas wie:


    public class MainViewModel : ViewModelBase
    {
        public CarModel myCar = new CarModel();
        myCar.Prop_ & "1" = "irgendwas";
    }

Mich würde interessieren ob und wenn ja, wie, dies umgesetzt werden kann. Den Sinn und Unsinn solchen Codes lassen wir einfach mal außen vor.

Vielen Dank schon mal für Eure Hilfe !!
<--- Wer übt, ist feige ! --->
private Nachricht | Beiträge des Benutzers
witte
myCSharp.de - Member



Dabei seit:
Beiträge: 966

beantworten | zitieren | melden

Man könnte ein Dictionary<String, object> verwenden. Allerdings geht dann die OOP über den Haufen weil gecastet werden muss.
private Nachricht | Beiträge des Benutzers
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 6141
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Hallo CombatKarl

dynamic oder Dictionary<string, object>. Ist aber meistens ein Zeichen, dass da was falsch angegangen wird. Nummeriert Variabeln, wieso? Nutze Arrays oder Listen.


Grüsse
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Peter Bucher am .
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
Palladin007
myCSharp.de - Member

Avatar #avatar-4140.png


Dabei seit:
Beiträge: 1429
Herkunft: Düsseldorf

beantworten | zitieren | melden

Dynamische Properties gehen theoretisch (aber umständlich) mit DynamicObject.

Einfacher wäre, wie witte schon sagt, ein Dictionary und das ist auch gar nicht mal so unüblich, wenn man wirklich dynamische Daten braucht.
Nummerierte Properties sind aber vermutlich eher ein Zeichen für eine Auflistung.

Und es kann auch gut sein, dass Du da gerade einen strukturellen Fehler einbaust, aber das kannst nur Du sicher wissen.
Zitat
Allerdings geht dann die OOP über den Haufen weil gecastet werden muss.
Das hat aber nicht wirklich etwas miteinander zu tun.
Die OOP ist ein Konzept, Casten musst Du aber so oder so, sobald Du mit verschiedenen Typen arbeiten willst.
"object" ist ja auch nur eine Klasse, von der alle anderen Typen implizit ableiten.
private Nachricht | Beiträge des Benutzers
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 6141
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Ich glaube witte meint damit, dass es nicht mehr reine Polymorphie ist.
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
witte
myCSharp.de - Member



Dabei seit:
Beiträge: 966

beantworten | zitieren | melden

Danke,
Oder Komposition.
private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5961
Herkunft: Leipzig

beantworten | zitieren | melden

Zitat von CombatKarl
Den Sinn und Unsinn solchen Codes lassen wir einfach mal außen vor.

Der Sinn des Ganzen wäre aber interessant, um eine echte Alternative aufzeigen zu können.

Ansonsten steht eigentlich alles dazu in [FAQ] Variablennamen zur Laufzeit zusammensetzen / Dynamisches Erzeugen von Controls
Weeks of programming can save you hours of planning
private Nachricht | Beiträge des Benutzers