2010-11-09 34 views
1

我有点困惑。在许多教程中,包括MSDN和ASP.NET网站中的一些教程,几乎都是关于成员。但是,在检查默认创建的AccountModel类时,它是关于类型的对象_provider MembershipProviderASP.NET MVC:为什么帐户模型示例使用MembershipProvider而不仅仅是成员资格

首先,我想知道他们为什么不使用Membership而不是MembershipProvider? 其次(也是最有刺激性),为什么当我尝试使用_provider.GetAllUsers(),我要求提供参数也的东西,如的PageIndexPAGESIZE,等等。但是,当我使用会员.GetAllUsers(),我不需要提供任何东西。

什么使Membership和MembershipProvider具有稍微不同的方法?

编辑

这些都是一些我都用来学习如何使用会员的文件。我在谈论我的书。

ASP.NET tutorial

4GuysFromRolla

An other 4GuysFromRolla

MSDN

感谢您的帮助

+3

可测性!你没有在教程中阅读过吗? – bzlm 2010-11-09 15:56:44

回答

3

MembershipProvider是一个抽象类,这意味着你不能创建它的一个新实例,相反,你必须创建自己的自定义类,它继承它,然后实现函数。

将基类作为构造函数意味着您可以传入任何继承自它的类。正如其他人所说,这在测试时有帮助。你可以传入一个假实现或模拟MembershipProvider来测试你的控制器/类的所有功能。

+0

感谢您的答案,这有助于我理解为什么不只是使用Membership,而是Membership.Provider。 – Richard77 2010-11-09 16:28:29

+0

但是,他们为什么呈现略有不同的方法?例如,为什么我需要为Membership.Provider提供params?而我不必如果不使用它? – Richard77 2010-11-09 16:29:56

+0

你能澄清你的评论吗? – Omar 2010-11-10 00:26:05

2

如果只是用会员,而不是供应商,你必须提供一个配置文件与模拟提供者为您的测试。通过这种方式,您只需创建一个虚假的成员资格提供程序并在创建MembershipService实例时使用它。成员资格只是默认MembershipProvider的包装。正如@bzlm所说,使用提供者而不是成员资格静态类是更可测试的。

相关问题