2014-05-01 187 views

回答

1

如果你看看UriKind的文檔,你會看到:

定義種的URI的Uri.IsWellFormedUriString(字符串, UriKind)和幾個Uri.Uri方法。

它使您能夠區分絕對URI和相對URI。

現在考慮一個例子,您希望用戶只輸入絕對URI並驗證它是否格式正確。然後,你會做什麼:

string inputUri = "/index.html)"; 
bool ifValid = Uri.IsWellFormedUriString(inputUri, UriKind.Absolute); 

如果只有RelativeOrAbsolute然後上面會返回true。

3

因爲下游代碼可能會期待其中一個或另一個。例如,如果您的代碼使用的絕對基本URI爲http://example.com/foo/,並且您希望用戶輸入某個資源的路徑,則需要相對URI。你不希望他們輸入http://afu.com/myname/home,因爲當你試圖使用用戶輸入的值時,最終會導致1)錯誤的路徑;或者2)嘗試創建URI「http://example.com/foo/htta://afu.com/myname/home」時出錯。

如果您期待絕對URI並且有人給您一個相對URI,則會發生同樣的事情。如果你沒有定義的基本URI,那麼這個相對URI對你沒有任何好處。

您會在用戶輸入時「防止代碼中的爆炸」,但會讓其他人(也許是您)在稍後進行清理時遇到更嚴重的問題。這三個值 - 絕對的,相對的,不確定的 - 讓您決定什麼是有效的,並允許您在輸入錯誤數據後立即拒絕錯誤數據。

+0

沒錯。它可以讓你提前失敗 - 在發生錯誤的地方失敗,而不是在以後。這通常是一個很好的原則,因爲a)你更可能會有異常而不是潛在的危險和沉默的不良行爲,b)它會從堆棧跟蹤或其他簡單的任務中進行調試,因爲你知道實際發生故障的位置。 –

相關問題