我正在用.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