現在、System.DirectoryServices名前空間を使用してDirectoryEntryオブジェクトを作成し、階層全体をループして情報を収集するアプリケーションを開発しています。DirectoryEntryまたは任意のオブジェクト階層をループする - C#
私は、階層内の各DirectoryEntryオブジェクトの子エントリの番号がわからないので、私はここで子供のプロパティを介してスパイダーに
をネストされたループのN番号を作成することはできませんが、私の擬似コードの例です:
//root directory
DirectoryEntry root = new DirectoryEntry(path);
if(DirectoryEntry.Childern != null)
{
foreach(DirectoryEntry child in root.Children)
{
//loop through each Children property unitl I reach the last sub directory
}
}
私の質問は、あなたのオブジェクトのサブディレクトリの数がわからない場合、情報を収集するためのループを作成する最良の方法は何ですか?
は
これは、ところで、再帰が実際に問題を処理するための良い方法ですの良い例です。ファイルシステム自体が深さ制限を課しているので、スタックを吹き飛ばすべきではありません。しかし、ツリーにループがある場合には、リンクするために注意が必要です。 –
@jeffmaphone:DirectoryEntryは、実際にはファイルシステムではなくLDAPサーバーを指しています。私はLDAPの深さ制限についてはわかりませんが、ループがある場合は、アクセスする各エントリのGUIDを記録し、同じエントリを2回訪問すると再帰を停止するのが最も簡単な方法です。 –
foreach-loopの中で 'using(child){...}'を使って、あなた自身の後にきれいにしてください。 http://stackoverflow.com/questions/41378746/disposing-during-foreach/41378945#41378945 – Born2Smile