2012-02-06 48 views
1

我有一个方法,这是dooing在组装的所有类的一些工作:循环在程序集的命名空间中?

var library = Assembly.LoadFrom(libraryPath); 
IEnumerable<Type> types = library.GetTypes(); 

foreach (Type type in types) 
{ 
    [...] 
} 

的事情是,现在,我想我的分裂代码我组装的每个命名空间!像

var library = Assembly.LoadFrom(libraryPath); 
IEnumerable<Type> types = library.GetTypes(); 

foreach (/*namespace in my assembly*/) 
{ 
    foreach (Type type /*in my Namespace*/) 
    { 
     [...] 
    } 
} 

但我在网络上所有的研究后,在这里的东西,所以我没有发现任何东西,我喜欢... 我能够做的唯一的事情就是:

List<string> namespaceList = new List<string>(); 

foreach (Type type in types) 
{ 
    if (!namespaceList.Contains(type.Namespace)) 
    { 
     namespaceList.Add(type.Namespace); 
    } 
} 

但是我无法对这个List做任何事...... 是的,我可以循环遍历namespaceList上的所有成员,然后遍历所有类型,并测试它们是否在当前命名空间内(字符串比较),但我真的觉得它不是要走的路...

任何帮助将非常感激 !

回答

5

可以使用LINQ GroupBy method

var namespaces = library.GetTypes().GroupBy(t => t.Namespace); 
foreach (var typesInNamespace in namespaces) 
{ 
    foreach (var type in typesInNamespace) 
    { 
     ... 
    } 
} 
+0

HOOO,听起来像正是我一直在寻找! – 2012-02-06 14:34:48

相关问题