我有一个控制台应用程序,我向这个控制台应用程序添加了对2个项目的引用,CustomerService.DataAccess和CustomerService.Business,现在,当控制台应用程序运行时,我想获得2个项目中的所有命名空间我添加到控制台应用程序。 Thankx。
答案 0 :(得分:0)
为此,您需要先获取引用的程序集,然后从该程序集中的所有类型中获取名称空间集。
AssemblyName[] referencedAssemblies = GetType().Assembly.GetReferencedAssemblies();
HashSet<string > namespaces = new HashSet<string>();
foreach (AssemblyName referencedAssembly in referencedAssemblies)
{
Assembly reference = Assembly.Load(referencedAssembly);
if (!reference.GlobalAssemblyCache)
{
HashSet<string> refernceNamespaces = new HashSet<string>(
reference.GetTypes().Select(t => t.Namespace).Where(ns => ns != null));
namespaces.UnionWith(refernceNamespaces);
}
}
上面的代码将获取不在GAC中的引用程序集中的所有名称空间。如果您只想获取特定程序集中的名称空间,可以只检查AssemblyName.Name
属性以确保检查正确的程序集。