Sto facendo un po 'di lavoro con Active Directory con lo spazio dei nomi di .NET System.DirectoryServices.AccountManagement
. Ho notato che Principal
implementa IDisposable
, che causa una sorta di mal di testa dal a tutto lo in quello spazio dei nomi eredita Principal
.Devo davvero chiamare Dispose() su tutti i Preside?
E.g. considerare il seguente codice per ottenere tutti gli utenti di un gruppo:
PrincipalContext domain = new PrincipalContext(ContextType.Domain);
GroupPrincipal group = GroupPrincipal.FindByIdentity(domain, "MyGroup");
PrincipalSearchResult<Principal> users = group.GetMembers();
Ogni singolo tipo in quel frammento di implementa IDisposable
, tra cui tutti gli utenti restituiti dalla ricerca e il risultato della ricerca si è posta.
Smaltire gli oggetti domain
e group
non è un grosso problema (sarebbe facile con un blocco using()
), ma cosa devo fare per ogni risultato? Devo davvero passare attraverso la collezione users
e smaltirne tutti?
FWIW, [GroupPrincipal.GetMembers] (http://msdn.microsoft.com/en-us/library/bb339975.aspx) mostra solo il gruppo in fase di eliminazione. Non riesco a trovare alcuna documentazione (ancora) che dichiari esplicitamente questo contratto di "proprietà a vita del membro": +1 perché trovo questo particolare contratto (o forse la sua mancanza), interessante. Tuttavia, ecco la mia [visione generale sul contratto IDisposable] (http://stackoverflow.com/a/14781766/166390). –
Ecco una risposta che può aiutare: http://stackoverflow.com/a/14627265/2258 –