それはあなたのようなに聞こえるかもしれませんクラスに名前空間からLookup
をしたい:
var lookup = assembly.GetTypes().ToLookup(t => t.Namespace);
または代わりに(と非常に似た)あなたはGroupBy
を使用することができます。
var groups = assembly.GetTypes().GroupBy(t => t.Namespace);
例えば:
var groups = assembly.GetTypes()
.Where(t => t.IsClass) // Only include classes
.GroupBy(t => t.Namespace);
foreach (var group in groups)
{
Console.WriteLine("Namespace: {0}", group.Key);
foreach (var type in group)
{
Console.WriteLine(" {0}", t.Name);
}
}
それはあなたが何をしているのかどうかは完全にはっきりしていません。それは各名前空間のクラスを取得しますが、それが本当にあなたが探しているものかどうかはわかりません。心に留めする
2点:
- ない本当にフォーム階層を、限りCLRが懸念されるようにしてください。この
- 名前空間についての再帰的なものは何もありません。 「根底にある」名前空間などはありません。 C#言語自体にはにいくつかのルールがありますが、CLRに関する限り、「親」名前空間などはありません。
あなた本当には、あなたのようなものを使用することができます「Foo.Bar」と「フー」に「Foo.Bar.Baz」から行ってみたい場合:
while (true)
{
Console.WriteLine(ns);
int index = ns.LastIndexOf('.');
if (index == -1)
{
break;
}
ns = ns.Substring(0, index);
}
@ジョンスキートを:ありがとうあなたはそんなに。特に.Netの知識は素晴らしいです。私はあなたの学生になりたいです。 :) – Prakash
@ジョンスケート:私はまた、反射についてもっと知りたいです。私はリフレクションを早く過小評価した。だから私はこれについてもっと知りたい。このトピックに関する実験的な知識のほとんどを得ることができる方法はありますか?私は一つの方法を知っています。 :)もし何かの情報源があるなら、私に示唆してください。 – Prakash
@Prakash:正直なところ、試してみるのは本当に良い選択です。 TypeとMethodInfoのようなもののすべてのメンバーを見て、それらが役に立つかもしれない場所を考えてください。 –