什么是不一致的可访问性错误?

Mog*_*gli 1 c# asp.net interface class

我正在使用自定义角色提供程序,因为我创建了一个CustomRoleProvider类并RoleProvider在其中实现了一些方法,就像这样

 public class CustomRoleProvider: RoleProvider
 {
 public override void CreateRole(string roleName)
    {
        throw new NotImplementedException();
    }

    public override bool DeleteRole(string roleName, bool throwOnPopulatedRole)
    {
        throw new NotImplementedException();
    }
  }
Run Code Online (Sandbox Code Playgroud)

所有方法都是公开的.但它显示错误

错误4 - 不一致的可访问性:基类'RoleProviderExample.RoleProvider'比类'RoleProviderExample.CustomRoleProvider'更难访问.

我在哪里做错了?

Son*_*nül 5

你也应该RoleProvider上课public.

public class RoleProvider 
{
   ...
}
Run Code Online (Sandbox Code Playgroud)

基类不能比派生类更难访问.你的RoleProvider班级可能access modifiers没有CustomRoleProvider上课.

    public class CustomRoleProvider : RoleProvider
    {
        public void CreateRole(string roleName)
        {
            throw new NotImplementedException();
        }

        public bool DeleteRole(string roleName, bool throwOnPopulatedRole)
        {
            throw new NotImplementedException();
        }
    }

    interface RoleProvider
    {
           void CreateRole(string roleName);

           bool DeleteRole(string roleName, bool throwOnPopulatedRole);
    }
Run Code Online (Sandbox Code Playgroud)

实际上,您不必public在接口上编写关键字.界面成员是自动的public.它们不能包含任何访问修饰符.