实现自定义成员资格提供程序:成员用户问题

4

我正在尝试实现一个自定义的成员资格提供程序,并想要更改GetUser方法。问题在于,GetUser返回MembershipUser,而我想返回MyMembershipUser,它具有两个附加属性FirstName和LastName。我可以在我的成员资格提供程序中创建一个新方法,该方法返回MyMembershipUser,但我认为这样做没有任何意义。

我应该如何去做呢?

3个回答

4
这样做会失去Membership类的意义。如果需要访问其他属性,请这样操作:
var user = Membership.GetUser(userName, true) as MyMembershipUser;

你应该有一个单独的Profile类来处理MembershipUser没有提供的内容。

var profile = Profile.GetProfile(Membership.GetUser(userName, true));

谢谢!似乎我只能在4分钟后接受您的回答。我会等待的! - john doe
1
@John,我不是在暗示你的答案不正确,因为它是正确的,但这不是唯一的解决方案。接受答案的时间限制有益于你。你越久保持答案开放,就越有机会收集到高质量的回答。顶起是一个很好的机制,可以表明对答案的满意度,同时等待其他可能性。个人而言,除非没有被接受的答案或者我遇到了没有趣味的问题,否则我通常只会检查那些没有被接受的问题。只想说,匆忙接受答案并不是期望的,而且通常不符合大家的最佳利益... - Sky Sanders
我同意@Sky Sanders并对任何不便道歉!我会牢记这一点! - john doe
@john,不用道歉,我只是在关心你。欢迎来到StackOverflow。 - Sky Sanders

2
您应该选择使用档案提供程序。请查看此链接:链接,您可以选择SqlStoredProcedureProfileProvider和SqlTableProfileProvider,这样您就可以在数据库中存储“明文”档案数据,并且可以随时查询数据库。
“您可以在存储过程中实现任何业务逻辑,以将档案数据映射到自己的数据库架构和数据库逻辑。”

0
如果MyMembershipUser是MembershipUser的基类,那么即使GetUser()方法的返回类型是MembershipUser,你也可以返回MyMembershipUser的实例,然后在必要时将它们强制转换回MyMembershipUser(但你真的需要这样做吗?)
顺便说一下,这是多态的一个例子。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接