アセンブリのネームスペース内でループするか?

私はアセンブリのすべてのクラスでいくつかの仕事をしていたメソッドがあります:

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

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

今は、アセンブリの名前空間ごとにコードを分割したいと思います。何かのようなもの

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

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

しかし、ウェブ上のすべての私の研究の後、私は好きなものは何も見つかりませんでした... 私ができる唯一のことは次のとおりです:

List namespaceList = new List();

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

しかし、私はこのリストで何もできません... はい、私はnamespaceList上のすべてのメンバーをループして、すべての型をループし、それらが現在の名前空間内で(文字列比較)であるかどうかをテストできますが、実際に行く方法ではないように感じます...

どんな助けでも本当にありがとう!

1

1 答え

LINQ GroupByメソッドを使用することができます。

var namespaces = library.GetTypes().GroupBy(t => t.Namespace);
foreach (var typesInNamespace in namespaces)
{
    foreach (var type in typesInNamespace)
    {
      ...
    }
}
5
追加された
Hooo、私が探していたものとまったく同じように聞こえる!
追加された 著者 Guillaume Slashy,