2017-06-22 6 views
-1

私はC#でURLアプリの設定をたくさん書いています。しばしば私はちょうどSomreURLのようにそれらを保存しますが、私は別のスキーム、ホストとパスの部分と別の回に行く。App.ConfigまたはAppSettings.jsonにURLを保存する最も良い方法

誰もが設定ファイルのURLを処理する方法と、スラッシュの欠落などを処理するためのベストプラクティスを持っていますか?

+0

私はこれが意見に基づいていることに同意します。適切な答えは、他の人々がこの問題を過去にどのように解決したかを示すと思います。私は巨人のアイデアの肩を信じています。私は人々のGoogle、この質問を見つけることが彼らを助けるだろうと思う! –

答えて

1

Uriクラスには、URLを手伝ういくつかの方法があります。私は静的Settingsクラスを持ちたい

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); 

あなたは別にスキーム、ホスト、およびパスの部品を保管仮定すると、あなたのような何かを行うことができます検証する

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); 
} 

一つの方法をごSettingsクラスのValidateというメソッドを使用してUrisのいずれかを使用しようとすると、

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

スタートアップクラスから:

Settings.Validate(); 
+0

私はこの方法が嫌いです。 'Uri'クラスは完全なURLを分解/解析できます。完全なURLを格納するには、AppSettingsの1つのエントリが必要です。ブラウザの場所バーからコピー/貼り付けできるので、入力エラーの可能性が減ります。他のものと同様に、実際のユースケースはデザインを決定する必要があります。分離された部分を分離する方がより有用な正当なケースがあります。 –

+0

ええ、明示的にそうする必要がない限り(おそらくdevとvs prodのhttpとhttpsとの間でスワップしていない限り)、設定にUriの部分を格納することにあまり熱心ではありません。私の答えは、設定クラスを使用することです。必要に応じて設定を処理し、検証することができます。 –

+0

はい。設定クラスは良い考えです。 –

関連する問題