2010-11-09 35 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所說,使用提供者而不是成員資格靜態類是更可測試的。

相關問題