kostenloser Webspace werbefrei: lima-city


C# - Kann Bilder aus einer DLL-Datei nicht laden

lima-cityForumProgrammiersprachenProgrammieren mit .NET & Mono

  1. Autor dieses Themas

    m*4

    Hallo. Ich stehe vor folgendem Problem. Ich habe ein kleines Spiel geschrieben, bei dem ich die Gegner jetzt dynamisch laden möchte. Ich durchsuche dazu einfach den Ordner "opponents" im eigenen Verzeichnis und hole mir die Gegner in Form von Dll-Dateien daraus. Sowit funktioniert auch, dass ich den Ordner durchsuche, die Dll-Dateien lade und die darin vorhanden Typen mir ausgeben lasse. Das Problem ist jetzt nur, dass ich mit dem ResourceManager nicht auf die Ressourcen zugreifen kann (sprich die Bilder des Gegners).

    Hier ist mein Code:

    List<string> files = ListFiles.GetFileList("opponents\\", ".dll", true, false);
    
    foreach (string dllFile in files)
    {
        try
        {
            Assembly assembly = Assembly.LoadFile(Application.StartupPath + "\\" + dllFile);
            Type[] types = assembly.GetTypes();
    
            for (int i = 0; i < types.Length; i++)
            {
                string baseName = types[i].FullName.Substring(0, types[i].FullName.IndexOf('.'));
                ResourceManager rm = new ResourceManager(baseName, assembly);
    
                for (int s = 0; s <= MAX_STATE; s++)
                    images.Add((Bitmap)rm.GetObject(baseName + "_" + Convert.ToString(s)));
            }
        }
        catch
        {
            MessageBox.Show("Catch");
        }
    }


    In der Zeile "images.Add((Bitmap ..." wir eine Exception geworfen und zwar die MissingManifestResourceException.

    Was mache ich falsch?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. vampiresilence

    Kostenloser Webspace von vampiresilence

    vampiresilence hat kostenlosen Webspace.

    Übersetz den Fehler doch einfach mal ins deutsche. Dann heisst er soviel, wie "Da fehlen noch Angaben, die eine eindeutige identifizieren der Ressource erst ermöglichen" bzw. soviel wie: Er weiss einfach immernoch nicht genau genug, welche Datei du denn nun haben möchtest. So wie ich das sehe, erfragst du mit dem rm auch nur den Dateinamen, ohne Erweiterung. D.h. es bliebe immernoch die Entscheidung offen, ob er nun eine *.bmp, eine *.gif oder eine *.png lädt. Diese Angabe musst du noch hinzufügen, dann sollte es gehen.

    Die Zeile
    ResourceManager rm = new ResourceManager(baseName, assembly);

    würde ich also wie folgt abändern
    ResourceManager rm = new ResourceManager(baseName + ".PNG", assembly);

    um zB eine *.png-Datei zu laden, dann sollte es klappen.

    Liebe Grüße
    - VampireSilence
  4. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!