我正在通过继承RolesService来扩展一个新类.在RolesService中,我有一个静电方法,我希望在新派生的类中覆盖该方法.当我从派生对象进行调用时,它不使用被覆盖的静电方法,它实际上调用基类方法.有什么主意吗?

public class RolesService : IRolesService
{
    public static bool IsUserInRole(string username, string rolename)
    {
        return Roles.IsUserInRole(username, rolename);
    }
}

public class MockRoleService : RolesService
{
    public new static bool IsUserInRole(string username, string rolename)
    {
        return true;
    }
}

推荐答案

执行以下操作将允许您绕过静电呼叫.在您想要使用代码的地方,通过依赖项注入获取一个IRolesService,然后当您需要MockRolesService时,您可以将其传入.

public interface IRolesService
{
    bool IsUserInRole(string username, string rolename);
}

public class RolesService : IRolesService
{
    public bool IsUserInRole(string username, string rolename)
    {
        return Roles.IsUserInRole(username, rolename);
    }
}

public class MockRoleService : IRolesService
{
    public bool IsUserInRole(string username, string rolename)
    {
        return true;
    }
}

Asp.net相关问答推荐

无法翻译 LINQ

asp.net、url 重写模块和 web.config

IIS Request.UserHostAddress 返回 IPV6 (::1),即使禁用了 IPV6

是否可以使用 Membership API 更改用户名

如何从网页 (asp.net) 启动 EXE

HttpContext.Cache 过期

iOS 8 / Safari 8 不适用于 ASP.NET AJAX 扩展

我应该如何在类和应用层之间传递数据?

温莎城堡有什么缺点吗?

Razor 主机工厂错误

MVC5 身份验证中的......与主域之间的信任关系失败

使 Web.config 转换在本地工作

ASP .NET Button 事件处理程序不会在第一次单击时触发,而是在 PostBack 后的第二次单击时触发

由于文件路径太长,网站发布失败

HttpResponse.End 或 HttpResponse.Close 与 HttpResponse.SuppressContent

如何在 asp.net 中更改 DataBinder.Eval 的日期格式?

Web API 必填参数

模型是否包含字段而不将其添加到数据库中?

中继器中的中继器

禁用文本框的模型绑定