Autor Beitrag
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Sa 16.06.12 16:16 
Moin


Ich weiß nicht, ob das Thema hier passt, wenn nicht, bitte einfach verschieben.


Also, ich suche eine Klasse, die genau das ermöglicht, was auch in den Ressourcen, die man in jedem Projekt mit geben kann, ermöglicht wird. Also ein möglichst einfaches Management von Ressourcen (Bilder, Musik, Videos, etc.).
Allerdings möchte ich zur Laufzeit Ressourcen hinzu fügen und entfernen können. Und genau da liegt die Grenze der Projekt-Eigenen Ressourcen-Datei.


Kennt jemand eine Klasse, die das möglichst einfach ermöglicht, dass auch eine schnelle Arbeit damit möglich ist?


Gruß
ThoMa
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46
Erhaltene Danke: 3



BeitragVerfasst: Mo 02.07.12 21:24 
Hallo Palladin,

Du willst so eine Art Resource-Bag? Nun - wie wäre es mit einem Zip-Archiv? :-)

Die Grenze der projekteigenen Resourcedatei liegt übrigens genau dort, wo sie liegt, weil Du eine Assembly, die im Speicher liegt und auch noch die ausführende Assembly ist, nicht bearbeiten kannst.

Grüße
Thorsten
Palladin007 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Mo 02.07.12 22:03 
Ich hab ja kein Problem damit, dass die Dateien in einem Ordner liegen, aber ich möchte eine Klasse haben, die die Ressourcen verwaltet.
Also z.B. wäre es auch praktisch, wenn mehrere gleichnamige Dateien möglich sind, also der eigentliche Dateiname automatisch fest gelegt wird.


In meinem aktuellen Projekt wollte ich das von einer Datenbank machen lassen, da ich sowieso eine brauche.
ThoMa
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46
Erhaltene Danke: 3



BeitragVerfasst: Mo 02.07.12 22:25 
Hallo Palladin,

dann bau Dir doch eine entsprechende Klasse. Irgendeinen Zugriffsmechanismus um die Resource eindeutig zu identifizieren brauchst Du jedoch. Ob das nun der vollqualifizierte Name ist, eine GUID oder was auch immer, sei egal.

An Deiner Stelle würde ich mit einem Dictionary arbeiten, welches ich XmlSerialisierbar mache. Für die Resourceninhalte würde ich dann ein Interface definieren, welches mir eben erlaubt aus der entsprechenden Darstellung im Dictionary das Resourcenobjekt zurück zu liefern bzw. den umgekehrten Weg unterstützt. Hier könnte man dann auch noch die Kompression einbauen. Im einfachsten Fall greift man auch wieder auf IXmlSerializable zurück.

Wenn Du es jedoch so haben willst, wie .NET das selbst unterstüzt, dann könntest Du mit einer dynamischen Assembly arbeiten und diese über AssemblyBuilder.Save auf Platte prügeln.

Grüße
Thorsten
Palladin007 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Mo 02.07.12 22:39 
So ähnlich habe ich mir das bisher für Bilder gemacht, aber eben nur für Bilder.
Als eindeutigen Zugriffsmechanismus hab ich im Dictionary einen Integer gesetzt, der Datei-Name setzt sich dann aus irgendeiner Zeichenfolge (z.B. Img_) und der Nummer zusammen.

Soweit funktioniert das, aber umständlich ist es schon, deshalb hab ich ja gefragt, ob es das vielleicht schon gibt.




Wie meinst du denn deinen letzten Satz?
ThoMa
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46
Erhaltene Danke: 3



BeitragVerfasst: Mo 02.07.12 23:22 
Hallo Palladin,

unter .NET kannst Du zur Laufzeit Assemblies bauen. Das ganze geht über den AssemblyBuilder - das sind sogenannte dynamische Assemblies. Hier wird es auch möglich sein die Resourcen in die dynamische Assembly hereinzulinken. Du baust Dir also entsprechende dynamische Assembly mit Deinen Resourcen und legst sie dann auf dem Datenträger ab. Zugriff erfolgt dann 'known-as-usual'.

Grüße
Thorsten
Palladin007 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Di 03.07.12 17:22 
Interessantes Feld, ich schau es mir mal an.

Gehört hab ich schon, aber Ahnung hab ich nicht davon :D