2012-09-20 25 views
1

我已經爲C#.NET 4.0創建了一個自定義RoleProvider。我已經實現了所有必需的方法,並且我還添加了一些我自己的方法。我已將Web.config更改爲使用我的自定義RoleProvider,但我無法調用任何自定義方法。例如,我已經添加下面的方法到我的自定義RoleProvider:無法從自定義RoleProvider調用方法

public void Myfunc(string user) 
{ 
    var a = user; 
} 

然而,當我嘗試使用該剪斷調用的方法:

Roles.MyFunc("testuser"); 

我沒有爲MYFUNC獲得智能函數和VS給我的錯誤「System.Web.Security.RoleProvider的未知方法Myfunc。我可以告訴我的自定義RoleProvider正在加載,因爲我可以在必需/重寫的方法之一中設置斷點,並且它擊中了自定義RoleProvider 。但是我怎樣才能調用我的RoleProvider的自定義函數呢?

回答

1

MyFunc不是RoleProvider的成員。

您是否嘗試創建擴展方法?
然後你的方法應該是這樣的:

public static void Myfunc(this System.Web.Security.RoleProvider roleProvider, string user) 
{ 
    var a = user; 
} 

如果Roles是你自己的類,你已經實現MyFunc那麼你需要向我們展示更多的代碼。但從它的外觀RolesRoleProvider的實例,或者如果它是您的類本身,那麼您需要使MyFunc方法靜態或創建一個Roles的實例。

+1

我遇到了'MembershipProvider'的類似問題,並且實現了可以通過Membership.Provider.MyExtensionMethod()調用我的函數的擴展方法。要用'RoleProvider'做同樣的事情,你可以像這樣調用擴展'Roles.Provider.MyExtensionMethod()' –

+0

這很有效,但我認爲我簡化了這個問題......我不確定角色是什麼。但在.NET框架文檔中,我看到他們是如何打電話給提供者的。提供程序由.NET實例化爲web.config中的值,因此我從不顯式實例化它,它由框架完成。 – solidau

+1

角色是框架中的靜態類。 System.Web.Security.Roles.i有這個相同的問題。如何擴展RoleProvider類並添加我自己的自定義方法? – superartsy

0

您的自定義角色提供程序的聲音設置正確。從那裏你需要做的就是將System.Web.Security.Roles.Provider投射到你的自定義類並調用自定義方法。

這將是這個樣子:

((MyProject.Helpers.CustomRoleProvider)System.Web.Security.Roles.Provider).MyFunc( 「testuser的」);