c# - Getting a list of all available namespaces in an AppDomain -
i need 'scan' active appdomain loaded assemblies @ run time , list of unique namespaces available in assemblies, .net back upwards that?
the code must execute during run time, code dynamic.
i started coding in c# , i'm bit unsure started, help appreciated.
as matter of fact wrote code lets couple of days ago.
use class:
public class nsscanner { public static list<type> getloadedtypes(appdomain appdomain) { homecoming _getloadedtypes(appdomain); } public static list<type> getpublicloadedtypes(appdomain appdomain) { homecoming _getloadedtypes(appdomain, true); } public static list<string> getuniquenamespaces(ienumerable<type> types) { var uniquenamespaces = new concurrentbag<string>(); parallel.foreach(types, type => { if (!uniquenamespaces.contains(type.namespace) && !string.isnullorempty(type.namespace)) uniquenamespaces.add(type.namespace); }); var sortedlist = uniquenamespaces.orderby(o => o).tolist(); homecoming sortedlist; } private static list<type> _getloadedtypes(appdomain appdomain, bool onlypublictypes = false) { var loadedassemblies = appdomain.getassemblies(); var loadedtypes = new list<type>(); parallel.foreach(loadedassemblies, asm => { type[] asmtypes; if (onlypublictypes) asmtypes = asm.getexportedtypes(); else asmtypes = asm.gettypes(); loadedtypes.addrange(asmtypes); }); homecoming loadedtypes; } }
usage:
var publicloadedtypes = nsscanner.getpublicloadedtypes(appdomain.currentdomain); var namespaces = nsscanner.getuniquenamespaces(publicloadedtypes);
enjoy!
c# dynamic appdomain .net-assembly
No comments:
Post a Comment