我正在用.NET的System.DirectoryServices.AccountManagement
命名空間做一些Active Directory工作。我注意到Principal
實現了IDisposable
,這導致了一種頭痛,因爲所有的都在那個命名空間中繼承了Principal
。我真的需要在每個Principal上調用Dispose()嗎?
E.g.考慮下面的代碼讓所有的用戶組中:
PrincipalContext domain = new PrincipalContext(ContextType.Domain);
GroupPrincipal group = GroupPrincipal.FindByIdentity(domain, "MyGroup");
PrincipalSearchResult<Principal> users = group.GetMembers();
在該段每一個類型實現IDisposable
,包括所有由搜索並設置自己的搜索結果返回用戶。
處理domain
和group
對象並不是什麼大事(對using()
塊來說很容易),但是我對每個結果做了什麼?我是否真的需要循環收集並處理每一個?
FWIW,[GroupPrincipal.GetMembers](http://msdn.microsoft.com/en-us/library/bb339975.aspx)僅顯示正在處理的組。我找不到任何明確聲明「會員一生所有權」合同的文檔(還沒有):+1,因爲我確實發現了這個特定的合同(或者可能缺乏這個合同),這很有趣。但是,這是我的[關於IDisposable合同的一般視圖](http://stackoverflow.com/a/14781766/166390)。 – 2013-02-12 21:19:28
這裏的答案可能有所幫助:http://stackoverflow.com/a/14627265/2258 – 2013-02-12 21:26:03