【发布时间】:2019-06-04 17:00:17
【问题描述】:
我正在尝试在 Active Directory 中创建一个用户,使用的函数改编自我找到的一些示例代码。
public bool crearUsuario(string usu, string pass, string path)
{
string path = @"LDAP://" + path;
//string oGUID = string.Empty;
try {
DirectoryEntry entrada = new DirectoryEntry(path);
DirectoryEntry nuevoUsuario = entrada.Children.Add("CN=" + usu, "users");
nuevoUsuario.Properties["samAccountName"].Value = usu;
nuevoUsuario.CommitChanges();
//oGUID = nuevoUsuario.Guid.ToString();
nuevoUsuario.Invoke("SetPassword", new object[] { pass });
nuevoUsuario.CommitChanges();
entrada.Close();
nuevoUsuario.Close();
return true;
}
catch (System.DirectoryServices.DirectoryServicesCOMException E)
{
//E.Message.ToString();
return false;
}
//return oGUID;
}
原始代码返回一个字符串 (oGUID),但我只需要一个布尔值。
我的问题是,他们为什么使用那个字符串?我只需要true 或false 值,所以我不知道是否需要返回字符串而不是布尔值。
【问题讨论】:
-
如何实现代码取决于您自己。但总的来说,我不会返回一个布尔值来表示成功或失败。相反,我会让异常冒泡到可以处理它的位置,或者我会创建一个不同的对象来表示成功或失败。例如,创建一个接口 IUserCreationResult,然后创建两个实现该接口 SuccessUserCreationResult 和 FailedUserCreationResult 的类。你的失败类可能有一个额外的属性来提供关于它失败的为什么的上下文。
-
这有点推测,但原始方法的意图可能与您的相同,但原始编码器可能还需要用户的 GUID。从本质上讲,返回的空字符串就像一个假值,一个非空字符串就像一个真值,另外还有一个好处是您还拥有 GUID 值。
-
我们无法猜测为什么该代码会返回一个字符串,尤其是因为我们不知道它来自哪里。
标签: c# active-directory