Реализация пользовательских вопросов членства провайдера членства - PullRequest
4 голосов
/ 27 апреля 2010

Я пытаюсь реализовать пользовательский поставщик членства и хочу изменить метод GetUser. Проблема в том, что GetUser возвращает MembershipUser, и я хочу вернуть MyMembershipUser, который имеет два дополнительных свойства FirstName и LastName. Я могу создать новый метод в своем поставщике членства, который возвращает MyMembershipUser, но тогда я думаю, что это не имеет никакого смысла.

Как бы я поступил так?

Ответы [ 3 ]

4 голосов
/ 27 апреля 2010

Это победило бы цель классов Membership. Сделайте что-то подобное, если вам нужен доступ к другим свойствам:

var user = Membership.GetUser(userName, true) as MyMembershipUser;

На самом деле у вас должен быть отдельный класс Profile, который обрабатывает вещи, которые MembershipUser не предоставляет.

var profile = Profile.GetProfile(Membership.GetUser(userName, true));
2 голосов
/ 09 июля 2010

Вы должны перейти к провайдеру профиля. отметив эту ссылку , у вас есть SqlStoredProcedureProfileProvider и SqlTableProfileProvider, так что у вас есть возможность хранить данные профиля «в открытом виде» в базе данных, что позволяет вам запрашивать базу данных в любое время, когда вам нужно.

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

0 голосов
/ 27 апреля 2010

Если MembershipUser является базовым классом MyMembershipUser, вы можете вернуть экземпляры MyMembershipUser, даже если возвращаемый тип GetUser () равен MembershipUser, а затем, если необходимо, привести их обратно к MyMembershipUser (но вам действительно нужно это сделать? )

Кстати, это пример полиморфизма.

...