Lutz Roeders .NET Reflector, Implementierfrage



  • Hallo Leute,

    Mich interessiert wie der Herr Roeder das genau gemacht hat. Die einfache .NET Sprachumwandlung. Das Reflektieren etc. Weiss jemand ob es dafür bereits vorgefertige Funktionen/Klassen gibt. Wie die Umwandlung geschieht?

    Vielen Dank,

    Johndüü



  • Servus,

    japp, .Net bietet dir eigentlich alles was du brauchst, um Assemblies zu reflektieren.

    Bsp.

    Assembly assembly = Assembly.LoadFile(@"C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Drawing.dll");
    Module[] modules = assembly.GetModules();
    
    MethodInfo[] methods = null;
    FieldInfo[] fields = null;
    Type[] classes = null;
    foreach ( Module module in modules )
    {
        methods = module.GetMethods(); // Methoden
        fields  = module.GetFields();  // Felder
        classes = module.GetTypes();   // Klassen
    }
    
    methods = null;
    fields = null;
    EventInfo[] events = null;
    foreach ( Type type in classes )
    {
        methods = type.GetMethods(); // Methoden
        fields  = type.GetFields();  // Felder
        events = type.GetEvents();   // Events
    }
    

    Ich habe dir hier mal ein kleines Beispiel gebastelt, mit dem du über die ganzen Klassen einer Assembly drüber laufen und dir die Felder, Events, Methoden etc. lesen kannst. Type ist ziemlich mächtig und bietet dir alles was du brauchst.

    Wenn dich das Thema näher interessiert, dann kannst du auch mal unter www.codeproject.com nach Reflection suchen. Dort gibts einige Artikel zu dem Thema.

    mfg
    Hellsgore



  • Hey Hellsgore,

    Vielen Dank. Das ist ja mal recht cool. Ich wusste nie wie ich ein Target laden kann. Die fähigkeiten vom Lutz Roeder .NET REflector finde ich klasse, finde aber auch, dass er zum Teil dinge vergessen hat und man diese einfacher machen könne, oder besser Teile erweitert.

    Merci.

    Gruss Johndüü

    PS: Wenn ich weitere fragen habe, kann ich dich wieder anfragen? thx



  • Nachtrag:

    Weiss auch jemand wie ich den MSIL Code daraus grabben und in evtl. VB.NET, C#, etc. "umwandeln" kann? Stichworte für google genügen auch. danke.



  • Servus,

    sicherlich kannst du fragen, dafür ist das hier auch ein Forum.

    Ja, es gibt Möglichkeiten MSIL wieder in C# Code zu wandeln.

    Ein OpenSource Projekt macht dies:
    http://www.devhood.com/Tools/tool_details.aspx?tool_id=354

    Ansonsten google: MSIL to C#

    findest du eine Menge Artikel.

    mfg
    Hellsgore


Anmelden zum Antworten