Analyse assembly qualifizierten Namen?
Möchte ich parse eine assembly-qualifizierten Namen .NET 3.5. Insbesondere die Montage selbst ist nicht verfügbar, es ist nur der name. Ich kann mir denken, viele Möglichkeiten, es zu tun von hand aber ich denke, dass ich möglicherweise fehlen einige feature in den system-Bibliotheken. Jede Anregung?
- Was ist eine assembly?
- Ich beziehe mich auf .NET-Assemblys hier.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den AssemblyName Klasse Parsen kann den Namen der assembly, für Sie, übergeben Sie einfach in den string-Konstruktor. Wenn Sie eine assembly qualifizierten Typnamen, ich denke, du musst Streifen der geben Sie den Teil der Zeichenfolge ersten (also alles bis zum ersten Komma).
Gibt es eine parser-Implementierung in Mono und BNF-Grammatik auf der MSDN-Website
Aus .Net 4 und Sie haben eine neue Möglichkeit zum überschreiben Geben.GetType:
Sehen http://msdn.microsoft.com/en-us/library/ee332784%28v=vs.100%29.aspx
Was Sie tun müssen, ist in dem Beispiel der oben genannten Dokumentation:
Ersetzen Sie eventuell die oben genannten Lambda-Ausdrücke mit komplexen Funktionen.
Es ist ein Klasse
TypeIdentifier
im Alphaleonis.Reflexion.Metadaten (auch von NuGet), das Parsen kann eine assembly qualifizierten Namen (wie auch der vollständige Typ-Namen oder einfach Namen eintippen), und zerlegen Sie es und lassen änderungen zu.Wenn die Baugruppe geladen ist, können Sie etwas wie das:
In dem Beispiel oben habe ich ein ausführen von Montage, sondern Sie Durchlaufen Ihre geladenen assembly.
Update:
Das kann man immer laden einer assembly in eine separate AppDomain bekommen Sie den Namen der assembly und, nachdem Sie fertig sind, entfernen Sie es.
Lassen Sie mich wissen, wenn Sie ein Muster benötigen.
Check-out die Pfad Klasse. Es hat eine Reihe von parsing-Funktionen für die Datei-Namen.
Oder Sie könnten versuchen:
Damit Sie etwas davon haben?
Wenn Sie auf der Suche, um eine Analyse der BNF form, das Beispiel oben mit GetType sollte für Sie arbeiten.
EDIT: Ok, sollte dies tun, was Sie wollen, vorausgesetzt, Sie haben den Namen: