Если пользовательский класс реализует IPrincipal и IIdentity

Я создаю собственную аутентификацию на токенах для asp.net web api 2, и у меня есть вопрос о классе user.

В настоящее время мой класс user реализует IPrincipal и IIdentity, но я не знаю, что является лучшей практикой. Разделите ли вы IPrincipal и IIdentity и сделаете реализацию IIdentity членом IPrincipal?

В настоящее время я использую следующее объявление класса

class User : IPrincipal, IIdentity

Спасибо!

+4
23 февр. '15 в 16:40
источник поделиться
1 ответ

Разделите IPrincipal и IIdentity и сделайте IIdentity реализация члена IPrincipal?

Я не думаю, что это хороший подход, поскольку, если Identity был похож на IPrincipal, не должно быть никаких причин для разделения.

Кроме того, на данный момент ваш класс реализует оба интерфейса. Это означает, что ваш класс реализует методы обоих интерфейсов. Если позже вы решите по какой-либо причине, что ваш класс не должен внедрять тот или иной интерфейс, вам просто нужно удалить реализацию методов, привязанных к интерфейсу, который вы хотите удалить.

В дополнение к приведенному выше, помните следующее:

Принцип разделения сегментов (ISP) гласит, что ни один клиент не должен быть вынужденным зависеть от методов, которые он не использует

Это один из пяти принципов SOLID, которые являются некоторыми основными принципами объектно-ориентированного программирования и дизайна.

+3
23 февр. '15 в 16:45
источник

Посмотрите другие вопросы по меткам или Задайте вопрос