当前位置: 首页 > 知识库问答 >
问题:

将方法私有更改为公共时获得错误霸气

卫烨烁
2023-03-14

这是我在UserController中的代码,运行良好。

private Identifier GetCurrentUser()
        {
            var identity = HttpContext.User.Identity as ClaimsIdentity;
            if (identity != null)
            {
                var userClaims = identity.Claims;
                return new Identifier
                {
                    Id = userClaims.FirstOrDefault(o => o.Type == ClaimTypes.NameIdentifier)?.Value,
                    Role = userClaims.FirstOrDefault(o => o.Type == ClaimTypes.Role)?.Value,
                };
            }
            return null;
        }

共有1个答案

娄利
2023-03-14

就像评论中指出的那样,您的路由名称与api/GetUser/{search}和api/GetUser/{id}存在冲突。编译器很难弄清楚您真正想要使用哪一个。

我建议您将GetUserById操作方法更改为这种形式,以便区分这两种路由。

[HttpGet("\GetUser\{id}")]
[Authorize(Roles = "Administrator,Staff")]
public IActionResult GetUser(string id)

或者,您可以将GetUsers的搜索术语与分页过滤器放在同一个类中,如下所示

public class SearchAndPagination
{
    public PaginationFilter paginationFilter {get;set;}
    public string search {get;set;}
}

然后作为请求正文传递给GetUser操作

[HttpGet]
[Authorize(Roles = "Administrator,Staff")]
public IActionResult GetUsers([FromBody] SearchAndPagination paginationFilter)
{
    var users = _userRepository.GetUsers(paginationFilter.paginationFilter, paginationFilter.search);
    ...
}
 类似资料:
  • 问题内容: 我当时正在上课,我想到了几个问题。 我注意到,其他类将使用的公共方法调用了一些私有方法来完成所有工作。现在,我知道OOD的原则之一就是尽可能多地私有化并隐藏所有实现细节。我不确定我是否完全理解其背后的逻辑。 我知道将字段设为私有很重要,以防止将无效值存储在字段中(这只是许多原因之一)。但是,对于私有方法,我不确定为什么它们如此重要。 例如,对于类,我们是否不能将所有实现代码都放入公共方

  • 问题内容: 将方法标记为程序包专用类是否有所不同? 之间和此处的可见性是否有实际差异? 问题答案: 如果该类不会被另一个更可见的子类扩展,则唯一的区别是 intent的清晰度* 。将所有方法包都声明为私有,使以后的读者更加难以确定同一包中的其他类将调用哪些方法。 作为我的设计解决方案,这没有多大意义,但是从技术上来说还是有可能的。

  • 在kotlin中定义一个有公共getter和私有(只有内部可修改)setter的var的正确方法是什么?

  • 我试图编写一个测试来比较字符串的相等性。 下面是应该测试的类的代码片段 这是一个测试类 正如您所看到的,我想测试公共方法,它在同一个类中调用私有方法。这个想法是,我想为私有方法创建一个模拟对象,无论何时从公共方法调用它,它都应该返回常量值 但是它返回,而不是从私有方法返回。 null

  • 我有一个关于静态方法访问的问题。我有一个类,其中有4个静态方法。如代码所示: } 我正在从下面的代码调用来自onLoadShipperDetailsListCtrl()的setSortingEnable()方法: } 因此,如果我从其他类调用setSortingEnabled()方法,我会认为它是公共的,而其他方法是私有的,但它会给我一个错误:Java . lang . nosuchmethode

  • 我有一节课: 在正常使用中,该类的行为与您预期的一样。方法和获取并设置复合列表。然而,我使用这个类作为一个对象,在使用JAX-WS构建的web服务中传递。当JAX-WS编译器看到这个类时,它会忽略和访问器,XSD中出现的唯一属性是。 在一天的大部分时间里,我的头撞在墙上,我决定尝试将私有方法的名称改为,突然间一切都如你所料。JAX-WS为属性创建了正确的模式。 似乎正在发生的事情是,JAX-WS看