我有我自己的实现GetUserId()
函数使得静态能够在静态上下文中检索ID。但我也有很多地方使用内置于asp.net UserManager库中的标准GetUserId()
函数。我不使用不同的逻辑同样的事情被重写非静态方法和使用里面的静态的(这是UserManagerService类中)修复:静态和非静态版本的C#中的相同功能#
public override string GetUserId(ClaimsPrincipal user)
{
return GetUserIdStatic(user);
}
public static string GetUserIdStatic(ClaimsPrincipal user)
{
return user.FindFirst(ClaimTypes.NameIdentifier).Value;
}
我没有,因为我更喜欢称之为非静态上下文中的非静态方法(通常超过90%的调用)。所以我更喜欢每当我可以的时候打电话_userManagerService.GetUserId(User)
而不是UserManagerService.GetUserIdStatic(User)
。
从可读性和可维护性的角度来看(以及我目前无法预见的最终有害后果)是否更好地按照上述方式进行;将所有呼叫切换到静态版本;或者我没有想过的其他方式?
这是一个很好的答案,但是你不应该对某种类型使用'var' –
谢谢你的建议。它看起来像一个更好的解决方案,虽然我不知道如何自己实例化UserManagerService对象,因为构造函数接受了多个我没有明确控制的参数,而且在其他地方,DI为我处理这件事(我从不实例化反对我自己)。但我认为这可能超出了这个问题的范围。 – m3h0w
@AidanConnelly使用'var'可以帮助您避免重复您已经在别处提供的信息,例如方法的返回类型。为了简洁和一致,我在任何地方都使用'var'。 – dasblinkenlight