您正在通過CustomeRoleProvider
公開的基類RoleProvider
不是public
。
如果您聲明RoleProvider
爲public
,錯誤將消失。您不必給RoleProvider
構造函數一個public
。
另外,您可以的CustomRoleProvider
的無障礙環境降低到的RoleProvider
。這可能是最合適的答案,你需要在組件外面暴露CustomRoleProvider
嗎?
如果RoleProvider
是一個接口,那麼,按照慣例,它被錯誤命名,你可以重命名爲IRoleProvider
。無論如何,它仍然不太容易接受,然後CustomRoleProvider
。
設爲公開這樣,
public interface IRoleProvider
{
void CreateRole(string roleName);
bool DeleteRole(string roleName, bool throwOnPopulatedRole);
}
如果沒有指定的interface
,class
或struct
的無障礙環境,internal
是隱含的。
interface
成員總是public
。除非另有說明,否則class
和struct
成員爲private
。
除了總是public
的接口成員的情況外,指定是好的做法。
您的實現可能如下所示,override
關鍵字不應用於接口實現,除非它們重寫了可覆蓋的基類實現。
public class CustomRoleProvider : IRoleProvider
{
public void CreateRole(string roleName)
{
throw new NotImplementedException();
}
public bool DeleteRole(string roleName, bool throwOnPopulatedRole)
{
throw new NotImplementedException();
}
}
如果你想明確地實現接口
,
public class CustomRoleProvider : IRoleProvider
{
public void IRoleProvider.CreateRole(string roleName)
{
throw new NotImplementedException();
}
public bool IRoleProvider.DeleteRole(
string roleName,
bool throwOnPopulatedRole)
{
throw new NotImplementedException();
}
}
你的基類是不公開的 – Jodrell