2012-09-20 28 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的”);