【问题标题】:Loop inside Namespaces of an assembly?在程序集的命名空间内循环?
【发布时间】:2012-02-28 00:26:32
【问题描述】:

我有一个方法对程序集的所有类都做了一些工作:

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);
    }
}

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

任何帮助将不胜感激!

【问题讨论】:

    标签: c# namespaces assemblies


    【解决方案1】:

    您可以使用LINQ GroupBy method:

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

    【讨论】:

    • 呵呵,听起来正是我想要的!
    猜你喜欢
    • 1970-01-01
    • 2013-12-18
    • 2010-10-14
    • 2014-02-27
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多