我使用的是具有以下签名的方法:检查参考参数值还是返回bool?
public static bool TryAuthenticate(string userName, string password,
string domainName, out AuthenticationFailure authenticationFailure)
的方法声明:bool authenticated = false;
然后继续对用户进行认证。
每当authenticated
设置为true或false时,authenticationFailure
设置为AuthenticationFailure.Failure
或AuthenticationFailure.Success
相应地。
所以基本上我可以使用authenticationFailure或方法的返回值来检查结果。然而,将这两种方法用相同的方法进行DRY似乎毫无意义的违反。
只是为了澄清,authenticationFailure没有用在方法的其他地方,所以它看起来是完全多余的。
目前,我这样做:
public static bool IsValidLDAPUser(string username, string password, string domain)
{
var authenticationStatus = new AuthenticationFailure();
if (ActiveDirectoryAuthenticationService.TryAuthenticate(username, password, domain, out authenticationStatus))
return true;
else return false;
}
但我能做到这一点,并得到一个类似结果:
public static AuthenticationFailure IsValidLDAPUser(string username, string password, string domain)
{
var authenticationStatus = new AuthenticationFailure();
ActiveDirectoryAuthenticationService.TryAuthenticate(username, password, domain, out authenticationStatus)
return authenticationStatus;
}
- 为什么你有一个参考参数和返回值一样吗?
- 我应该使用哪一个来检查结果,它有什么区别?
- 这只是一个错误的代码的情况下,还是我错过了这一点?
在此先感谢!
我想你第二个代码块可能包含一个错误。返回类型不应该是'bool'而不是'AuthenticationFailure',或者返回语句是否应该改为返回'authenticationStatus'? – 2010-09-01 15:35:21