如何从方法中返回多种可能性中的一种

Kar*_*ten 2 c#

我有一个登录程序,可能会导致多个结果:

  • 用户未激活
  • 未知的用户名
  • 无效的密码
  • 有效密码

我正在考虑如何设计方法.我看到了这些选择

  • 每种可能性的一种方法(如IsUserActivated,IsUsernameKnown ..).这似乎违反了"告诉不要问"的原则,我不知道我只是不喜欢它.

  • 为每种可能性抛出自定义异常(如UserNotActivatedException,UserUnknownException ..).这对我来说似乎也是错的.

  • 返回自定义ValidationResult类

  • 返回自定义枚举

想法?:-)

也可以随意编辑主题(和标签)

cjk*_*cjk 9

我会选择最后一个,你不需要一个完整的课程,一个枚举就足够了.

但是,您是否计划告诉用户他们的密码错误?这允许黑客验证他们正在使用正确的登录,只需要找到正确的密码.更安全的选择是始终告诉用户他们的登录失败,而不是指定它是用户名还是密码.