dedlfix: Anonymes Objekt zusammenstellen.

Beitrag lesen

Tach!

ich muss ein Anonymes Objet zusammenstellen:
Die property1 und property2 mussen jenachdem, was vom Benutzer ausgewählt wurde, benannt werden,
Ich muss also einen Weg finden, die Namen dynamisch ändern zu können.

C# ist nicht PHP. Der Compiler muss den Typ kennen oder aus dem anonymen Objekt sich selbst einen Typ generieren können. Er kann das nicht erst zur Laufzeit. Eigenschaften nach Belieben hinzufügen ist nicht drin.

Es gibt nur den Datentyp dynamic und die DLR (Dynamic Language Runtime). Damit kann man solche "Schweinereien" machen. Aber man büßt auch allen Komfort der starken Typisierung ein und handelt sich einen Sack voll neuer potentieller Probleme ein. Beispielsweise dass einige Fehler erst zur Laufzeit und nicht bereits vom Compiler erkannt werden können.

Ich rate davon ab und schlage stattdessen vor, richtige Typen zu verwenden. Wie wolltest du bei deinem Vorgehen prüfen, ob das Ding eine Pizza oder ein Steak ist? Mit Reflection nachschauen, ob das Objekt eine bestimmte Eigenschaft hat oder nicht? Keine gute Idee, weil du dann die Eingenschaftsnamen als String angeben musst. Damit ist auch wieder die starke Typisierung ausgehebelt.

Wenn es denn etwas variables sein soll, dann würde ich eher eine Pizza-Klasse und eine Steak-Klasse und einen gemeinsames Basistyp (oder ein Interface) für deine Liste nehmen. Wenn das zu viele oder gar erst zur Laufzeit bekannt werdende Klassen werden, dann wäre auch eher ein Basistyp mit einem Dictionary für die unterschiedlichen Eigenschaften eine Variante.

Keiner der Vorschläge erzeugt bei mir gar keine Bauchschmerzen. Ich kann dir auch gar nicht zu etwas konkretem raten, weil ich nicht weiß, wie du dir dann die weitere Verarbeitung dieser variablen Objekte vorstellst.

dedlfix.