我有兩個方法重載:命名和重載
bool HasRight(RightType rightType, string cityId);
bool HasRight(RightType rightType, string cityAlias);
當然它不會編譯爲方法signatues是相同的。在這種情況下解決命名問題的最佳方法是什麼?
我有兩個方法重載:命名和重載
bool HasRight(RightType rightType, string cityId);
bool HasRight(RightType rightType, string cityAlias);
當然它不會編譯爲方法signatues是相同的。在這種情況下解決命名問題的最佳方法是什麼?
你能立即區分一個id和一個別名嗎?如何簡單地說:
bool HasRight(RightType rightType, string cityIdOrAlias)
如果不明確的,像「如果它與:
開始,例如:nyc
,那麼它就是一個ID,否則它被認爲是一個別名」。其他選項:
後綴名:
bool HasRightById(RightType rightType, string cityId)
bool HasRightByAlias(RightType rightType, string cityAlias)
採取兩個和需求只有一個方法裏面:
bool HasRight(RightType rightType, string cityId, string cityAlias)
我認爲你唯一的選擇是重命名一個或兩個功能,當你不能改變它的一個參數的數據類型:
HasRightById/HasRightByAlias
使用不同的方法名稱,不濫用超負荷語義斷開的東西。
例如:
bool HasRightById(RightType rightType, string cityId);
bool HasRightByAlias(RightType rightType, string cityAlias);
更好的方法集的名字,這意味着什麼:
bool HasRightById(RightType rightType, string cityId);
bool HasRightByAlias(RightType rightType, string cityAlias);
因爲運行時是看方法的名稱和參數類型(不是參數名稱)來解決方法調用,您可以更改名稱或更改參數類型。一般我有一個suffis方法,是這樣的:
bool HasRightId(RightType rightType, string cityId);
bool HasRightAlias(RightType rightType, string cityAlias);
你喜歡還是不喜歡,有沒有別的比更改名稱做,如果你不能通過Id
爲int
......
您可以使用一個枚舉的,像這樣...
public bool HasRight(RightType rightType, string value, RightValue valueType)
{
if (valueType == RightValue.CityAlias)
{
}
else if (valueType == RightValue.CityId)
{
}
}
public enum RightValue
{
CityId, CityAlias
}
個
或不同名稱的方法
bool HasRightByCityAlias(RightType rightType, string cityAlias)
{
}
bool HasRightByCityId(RightType rightType, string cityId)
{
}
你有兩種方法不同的名字,有意義的名稱:或者
bool HasRightById(RightType rightType, string cityId);
bool HasRightByAlias(RightType rightType, string cityAlias);
,如果你的目標.NET 4.0或更高版本,可以使用使用默認值命名參數:
bool HasRight(RightType rightType, string cityId = null, string cityAlias = null);
然後您必須確保cityId和cityAlias之一不是nul l,並執行相應的代碼。