gpt4 book ai didi

c# - 如何调用角色提供者的自定义方法?

转载 作者:行者123 更新时间:2023-11-30 15:36:59 24 4
gpt4 key购买 nike

好的,我已经创建了自定义角色提供程序并将其添加到 web.config 中。这是我的角色提供者代码的一部分:

public class MyCustomRoleProvider : RoleProvider
{
public override bool IsUserInRole(string username, string roleName)
{
return true;
}

public string MyCustomFunction()
{
return "its my custom string";
}
}

当我需要在我的应用程序中使用角色提供者时,我会这样调用它:

var truth = Roles.IsUserInRole("myUsername", "myFakeRole");

好的,太棒了!它会调用我的自定义代码(我可以从调试中看出)并每次都返回 true。为什么我不能对我的自定义角色提供程序进行以下调用?

var no_compile = Roles.MyCustomFunction();

如何让我的自定义角色提供者的所有公共(public)成员都可以访问?

最佳答案

我真的不知道是什么问题,但你应该能够做到

var no_compile = _Roles.MyCustomFunction();

如果 _Roles 定义了一个新的 MyCustomRoleProvider 因为该函数是公共(public)的

示例

MyCustomRoleProvider _Roles = new MyCustomRoleProvider();
var no_compile = _Roles.MyCustomFunction();

注意:您不能直接调用MyCustomRoleProvider.MyCustomFunction(),因为它不是公共(public)静态字符串


注意:System.Web.Security.Roles 是一个包含与您的类相同的函数名称的类 IsUserInRole(string username , string roleName) 但两个类中的功能并不相同。因此,您无法访问 Roles.MyCustomFunction(),因为 System.Web.Security.Roles 类不包含 MyCustomFunction() 的定义> 那是因为你没有在类中定义新函数

  • MyCustomRoleProviderSystem.Web.Security.Roles 是两个不同的类,它们具有不同的功能

System.Web.Security.Roles contains a definition for IsUserInRole(string username, string roleName) (+1 overload)

请注意:您不能修改或向 System.Web.Security.Roles 添加函数,因为它是写保护的

System.Web.Security.Roles is write protected

谢谢,
希望这对您有所帮助:)

关于c# - 如何调用角色提供者的自定义方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13166813/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com