我有我自己的實現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