Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

11

18.08.2014, 17:26

Ich wäre euch nur sehr dankbar, wenn euch die Designidee nicht zustimmt, nicht gleich "auszuflippen", denn ich versuiche mich noch über diese Objektinformationen zur Laufzeitgeschichte noch richtig einzufinden und das ist der erste Versuch^^

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

12

18.08.2014, 17:27

Bitte sage doch einfach, wofür du das genau verwenden willst. (Sehr wahrscheinlich wird es sich besser lösen lassen, als es bisher der Fall ist.)

Was heißt "egal welche Ressource"? Speicherst du auch Grafik- und Sounddaten in dieser Datei ab?
Eigentlich sollte es reichen, nur die Informationen zu speichern, die sich ändern können, bzw. anhand derer die Spielsituation wiederhergestellt werden kann. Das heißt, dass nicht auch ausnahmslos alles gespeichert werden muss.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

13

18.08.2014, 17:32

Also es ist diesesmal nicht zu einem Spiel^^, es war ein kleines Programm was einfach nur Bilder, Videos, Filme, etc.. auf dem Rechner auslesen lassen soll, also alle ihre Infos wie z.b beim Film: Autor, Schauspieler, Dauer etc...(die infos habe ich in meinem Rechner^^) und diese in meine Objekte rein laden soll also alles dynamisch, und diese Infos wiederum sollen in eine Textfile gespeichert werden und da dachte ich mir so ein dynamisches Interface, was einfach die komplette Resource zurück gibt, sei es Film, Lied Bild, (also alle Informationen wie eben genannt)und in eine File abspeichert.

Legend

Alter Hase

Beiträge: 731

Beruf: Softwareentwickler

  • Private Nachricht senden

14

18.08.2014, 17:37

Abgesehen davon würde ich dynamic als unsauber und schwer wartbar bezeichnen.
Definitiv ist es in der Benutzung arschlahm und für Reflection braucht man es nicht.
(Ja, das ist eine Funktionalität die ich aus C# rausschmeißen würde, wenn ich könnte)
Richtig angewendet erspart das dynamic Schlüsselwort viel Zeit und Aufwand. JungleProgger hat übrigens mit dem dynamic object direkt ins schwarze getroffen.
Nicht existierende Properties werden zur Laufzeit generiert, fall eine Versionsinkompatibilität auftreten sollte. Aber ich denke du hast für deine Aussage sicherlich triftige Gründe, die ich gerne erfahren möchte.


Ja, sehr viel COM Interop auf der Arbeit und eine ganze Menge an Interop-Assemblies bei denen viele Methoden in C# nur ein dynamic zurückliefern. Zugegegeben, durch COM Interop ist manches vielleicht noch schlimmer, als bei der Benutzung von dynamic in reinem C# Code.
Aber dynamic heißt als Anwender dieser Komponenten dann:

- Keinerlei Hilfestellung durch Intellisense
- Was die Performance angeht, nach meinen Erfahrungen: Bei einer Funktion, die wenig tut, ist ein Methodenaufruf mit Hilfe von dynamic mal um den Faktor 20 langsamer als wenn man das Objekt in das richtige Interface castet und an diesem den selben Aufruf tätigt. Und wenn man viele Funktionen aufzurufen hat, macht sich das irgendwann auch bemerkbar.
- Und wenn alles schief läuft bekommt einen sehr schnell einen schönen FatalExecutionEngineError der einem die Applikation runterreißt. Okay, diesen Fehlertyp gab es vorher auch schon. Aber mit dynamic wird er schnell zum Regelfall.

Das Properties zur Laufzeit erzeugt werden ist mir hingegen in der Tat neu. Mein Verständnis davon war, dass sich hinter dieser dynamic Referenz nach wie vor das normale Objekt befindet, und wenn man eine nicht existente Property benutzen will gibt es zur Laufzeit Probleme. Das wäre auch konsistent mit dem Verhalten in diesen Beispielen: http://msdn.microsoft.com/de-de/library/dd264741.aspx

@JungleProgger: Sorry, aber bei dynamic bin ich lieber ganz schnell dabei auf die Nachteile hinzuweisen. Dieses Keyword ist für mich eine der schlechtesten Erweiterungen zu C# die Microsoft je gemacht hat. Und um Abzufragen welche Properties ein Objekt zur Laufzeit hat, brauchst du es nicht.
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"

Netzwerkbibliothek von mir, C#, LGPL: https://sourceforge.net/projects/statetransmitt/

15

18.08.2014, 17:46

Und wie soll ich es sonst machen, bzw welchen Rückgabetyp sollte die Interfacemethode haben? anstatt dynmic?

16

18.08.2014, 17:47

Also ich benutze es nicht zur Propertyausgabe, sondern nur im zu demonstieren das die Objekte quasi "unbekannt" zu kompilierungszeit sind.

Legend

Alter Hase

Beiträge: 731

Beruf: Softwareentwickler

  • Private Nachricht senden

17

18.08.2014, 17:50

Du loopst doch durch obj.GetType().GetProperties(), zumindestens war das einer der Vorschläge aus diesem Thread. GetType ist an jedem object vorhanden. Und jede andere Klasse ist direkt oder indirekt von object abgeleitet. Daher reicht object.
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"

Netzwerkbibliothek von mir, C#, LGPL: https://sourceforge.net/projects/statetransmitt/

18

18.08.2014, 17:54

So mache ich das auch, ok mit object ändere ich das ganze noch um, aber ist das Pronzip des Loopens zur Laufzeit durch das Objekt denn richtig?

oder soltle ich sie doch serialisieren??

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

19

18.08.2014, 17:59

Die Sachen sind doch dann nicht unbekannt. Es handelt sich um Datei-Eigenschaften. Diese haben einen Schlüssel und einen Wert. Dafür brauchst Du folglich kein dynamic object, sondern ein Dictionary<string,string>.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

20

18.08.2014, 18:03

Ok vielen Dank :)

Werbeanzeige