Han*_*ank 7 .net resources dispose iprincipal groupprincipal
我正在使用.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();
Run Code Online (Sandbox Code Playgroud)
该代码段中的每个类型都会实现IDisposable,包括搜索返回的所有用户以及搜索结果集本身.
处理domain和group物体并不是什么大不了的事(用using()块来容易),但我对每一个结果怎么办?我是否真的必须遍历该users集合并处理每一个?
合同IDisposable就是这样,合同。预计将会跟进。如果您没有“需要调用 Dispose”,他们就不会执行合同......
实际上,您无法真正判断特定实例正在使用什么类型的对象Principal 。有时,您确实必须处置它,有时则不需要。除非您了解Principal. 例如,如果 Principle 实例中的底层对象是 a DirectoryEntry,那么您应该处置它。但是,您没有真正的方法可以在运行时判断底层对象是什么。即使可以,直接打电话似乎也更容易Dispose。
| 归档时间: |
|
| 查看次数: |
2340 次 |
| 最近记录: |