【发布时间】:2013-01-28 07:23:32
【问题描述】:
我正在使用 .NET 的 System.DirectoryServices.AccountManagement 命名空间进行一些 Active Directory 工作。我注意到Principal 实现了IDisposable,这让人有点头疼,因为该命名空间中的所有东西 都继承了Principal。
例如考虑以下代码来获取组中的所有用户:
PrincipalContext domain = new PrincipalContext(ContextType.Domain);
GroupPrincipal group = GroupPrincipal.FindByIdentity(domain, "MyGroup");
PrincipalSearchResult<Principal> users = group.GetMembers();
该 sn-p 中的每个类型都实现了IDisposable,包括搜索返回的所有用户和搜索结果集本身。
处理domain 和group 对象并不是什么大问题(使用using() 块会很容易),但是我该如何处理每个结果呢?我真的需要遍历 users 集合并处理掉每一个吗?
【问题讨论】:
-
FWIW, GroupPrincipal.GetMembers 仅显示正在处理的组。我找不到任何明确说明“成员终身所有权”合同的文档:+1,因为我确实发现这个特定的合同(或者可能没有合同)很有趣。但是,这是我的general view on the IDisposable contract。
-
这是一个可能有帮助的答案:stackoverflow.com/a/14627265/2258
标签: .net resources dispose iprincipal groupprincipal