用户 class 是否应该实施 IPrincipal 和 IIdentity

Should User class implement IPrincipal and IIdentity

我正在为 asp.net web api 2 构建自己的基于令牌的身份验证,我对 user class.

有疑问

目前我的 user class 实现 IPrincipalIIdentity,但我不知道什么是最佳实践。你会分开 IPrincipalIIdentity 并使 IIdentity 实现成为 IPrincipal 的成员吗?

目前我使用以下 class 声明

class User : IPrincipal, IIdentity

谢谢!

Would you divide IPrincipal and IIdentity and make the IIdentity implementation a member of IPrincipal?

我认为这不是一个好方法,因为如果 IdentityIPrincipal 相似,则不应该有任何分开的理由。

此外,截至目前,您的 class 实现了这两个接口。这意味着您的 class 实现了两个接口的方法。如果您稍后出于任何原因决定您的 class 不应该实现一个或另一个接口,您应该只需要删除绑定到您要删除的接口的方法的实现。

除上述内容外,请记住以下几点:

The interface-segregation principle (ISP) states that no client should be forced to depend on methods it does not use

这是五个 SOLID 原则之一,这些原则是面向对象编程和设计的一些基本原则。