현재 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
}
}
제 질문은 개체의 하위 디렉터리 수를 모르는 경우 정보를 수집하기위한 루프를 만드는 가장 좋은 방법은 무엇입니까?
은
이, BTW, 재귀가 실제로 문제를 처리하는 좋은 방법이다의 좋은 예입니다. 파일 시스템 자체가 깊이 제한을 부과하기 때문에 스택을 날려서는 안됩니다. 그러나 트리에 루프가있을 경우 조심해야합니다. –
@jeffmaphone : DirectoryEntry는 실제로 파일 시스템이 아닌 LDAP 서버를 가리키고 있습니다. LDAP 깊이 제한에 대해서는 잘 모르겠지만 루프가있는 경우이를 처리하는 가장 쉬운 방법은 방문한 각 항목의 GUID를 기록하고 동일한 항목을 두 번 방문하면 재귀를 중지하는 것입니다. –
foreach-loop 내에서'using (child) {...}'를 사용하여 자신을 정리해야합니다. http://stackoverflow.com/questions/41378746/disposing-during-foreach/41378945#41378945 – Born2Smile