Должен ли класс User реализовывать IPrincipal и IIdentity

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

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

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

class User : IPrincipal, IIdentity

Спасибо!


person BendEg    schedule 23.02.2015    source источник
comment
Класс реализует интерфейс, а не наследуется от него... любой класс может наследовать только от одного< /b> базовый класс (но может реализовывать несколько интерфейсов)   -  person marc_s    schedule 23.02.2015
comment
Почему нет? Это интерфейсы, они предназначены для реализации. Ваш вопрос о реализации обоих интерфейсов в одном классе?   -  person Sergey Kalinichenko    schedule 23.02.2015


Ответы (1)


Не могли бы вы разделить IPrincipal и IIdentity и сделать реализацию IIdentity членом IPrincipal?

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

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

В дополнение к вышесказанному следует помнить следующее:

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

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

person Christos    schedule 23.02.2015