Я собираюсь показать свое незнание о том, как использование операторов работает в c #, я думаю.
Я пытаюсь написать функцию, которая получает уникальные идентификаторы для пользователя в активном каталоге и возвращает этого пользователя.Затем я хочу внести изменения в пользователя и зафиксировать их.
Я подозреваю, что это не работает, потому что я возвращаюсь в блоке использования.
Вот основная идея:
public static DirectoryEntry GetADUser( string prop1Value, string prop2Value )
{
using( var rootDE = new DirectoryEntry(LDAPPath, User, Password))
{
using( var searcher = new DirectorySearcher(rootDE))
{
searcher.Filter = string.Format("(&(prop1={0})(prop2={1}))", prop1Value, prop2Value);
var user = searcher.FindOne().GetDirectoryEntry();
return user;
}
}
}
//...
var user = GetADUser("val1","val2");
user.Properties["prop3"].Value = "Spagetti";
user.CommitChanges();
Будет ли это работать?Не похоже, что активный каталог показывает изменения, которые я делаю таким образом.Я не получаю никаких исключений при вызове изменений коммита.
Это связано с: Можно ли делать возврат изнутри, используя блоки и Что происходит, когда returnвызывается из блока 'using'? .
Если это не сработает таким образом, как плохо это получится, если я переписываю эту функцию без использования блоков?