2017-06-22 32 views
-1

我發現自己在C#中編寫了很多URL應用程序設置。通常我只是將它們存儲爲SomreURL,但其他時候我會使用單獨的Scheme,Host和Path部件。在App.Config或AppSettings.json中存儲URL的最佳方式

有沒有人有他們如何處理設置文件中的網址的最佳做法,以及他們如何處理缺少斜線等?

+0

我不同意這是基於意見的。我認爲一個合適的答案會顯示其他人過去如何解決這個問題。我相信巨人的想法。我認爲當人們谷歌,發現這個問題會幫助他們! –

回答

1

Uri類有一些方法可以幫助您製作網址。

假設你存儲方案,主機和路徑部分分開,你可以這樣做:

string scheme = "https://", host = "stackoverflow.com", path = "questions/44707782/best-way-to-store-urls-in-app-config-or-appsettings-json"; 
var base = new Uri(String.Concat(scheme, host)); 
var uri = new Uri(base, relative); 

我想有一個靜態Settings類:

public static class Settings 
{ 
    public static string Scheme => ConfigurationManager.AppSettings["Scheme"]; 
    public static string Host => ConfigurationManager.AppSettings["Host"]; 
    public static string Path => ConfigurationManager.AppSettings["Path"]; 
    public static Uri BaseUri => new Uri(String.Concat(Scheme, Host)); 
    public static Uri SomeUri => new Uri(BaseUri, Path); 
} 

一種方法來驗證您的設置是在您的設置類中使用一種稱爲「驗證」的方法,該方法嘗試使用其中一個Uris

public static void Validate() 
{ 
    var valid = SomeUri; // will throw exception if not valid Uri 
} 

然後從你的創業階層:

Settings.Validate(); 
+0

我不喜歡這種方法。 'Uri'類可以解構/解析完整的URL。存儲完整的網址需要一個AppSettings條目,並且可以減少輸入錯誤的機率,因爲它允許您從瀏覽器地址欄進行復制/粘貼。與任何事情一樣,實際使用案例應該規定設計。有合理的情況下,分開的東西會更有用。 –

+0

是的,我並不太熱衷於將Uri部分存儲在配置中,除非有明確的需要(可能會在dev和prod之間交換http和https)。我的答案更多地是使用設置類,以便您可以在需要時處理和驗證設置。 –

+0

是的。設置類是一個好主意。 –