2009-08-12 7 views

Antwort

2

Sie können String.Format verwenden, um Ihre Daten zu erstellen, und {0} in der Konfigurationsdatei an geeigneten Stellen verwenden.
Angenommen, Sie haben grundlegende Getters für Ihre Daten, sollte dies einfach zu implementieren sein.

Zum Beispiel:

<add key="Mail" value="[email protected]"/> 
<add key="LinkFormat" value="[[Mail Us|mailto:{0}]]"/> 

Und dann (abgespeckte von try/catch, die Überprüfung von Daten):

public static string GetEmail() 
{ 
    return ConfigurationManager.AppSettings["Mail"]; 
} 

public static string GetEmailLinkformat() 
{ 
    string format = ConfigurationManager.AppSettings["LinkFormat"]; 
    string mail = GetEmail(); 
    return String.Format(format, mail); 
} 
+0

Könnten Sie bitte ein Beispiel posten? –

+0

Ich arbeitete schon daran ... – Kobi

+0

Oh, danke Kobi, großartiges Beispiel! :-) Jedenfalls habe ich über eine Lösung nachgedacht, die keine extra Codierung erfordert ... Aber wenn es keine Alternative gibt, wird das funktionieren, danke nochmal. –

-1

Wenn Sie $ Begrenzungszeichen in den AppSetting Werten dieses mit der ersetzt werden kann Schlüsselwerte, die sie aus den AppSettings darstellen, z

<add key="PrivacyPolicyURL" 
    value="$domain$/Default.aspx?siteid=$siteid$&amp;locid=$locid$&amp;tpid=$tpid$" 
    /> 

Verwenden der folgenden Funktion, um die Ersetzungen durchzuführen;

public static string GetAppSetting(string key) 
{ 
    string keyValue = ConfigurationManager.AppSettings[key].ToString(); 

    foreach (System.Text.RegularExpressions.Match match in System.Text.RegularExpressions.Regex.Matches(keyValue, @"\$[\d\D]*?\$")) 
    { 
     try 
     { 
      string replaceWith = ConfigurationManager.AppSettings[match.Value.Replace("$", string.Empty)] ?? string.Empty; 
      keyValue = keyValue.Replace(match.Value, replaceWith); 
     } 
     catch 
     { 
      keyValue = keyValue.Replace(match.Value, string.Empty); 
     } 
    } 

    return keyValue; 
} 

So im Beispiel fügt dies die AppSettings für Domain, siteid, locid und TPID produzieren so etwas wie; www.mywebsite.com/Default.aspx?siteid=1001&locid=1001&tpid=1001

+0

Das ist auch eine schöne Option, danke! Ich habe mich jedoch mehr darauf konzentriert, zum Beispiel einen Wert zu verwenden, der im Abschnitt appSettings in einem anderen Abschnitt deklariert wurde, beispielsweise in einem log4net-Abschnitt. Wie auch immer, ich nehme an, dass jede Option etwas Codierung mit sich bringt, oder? –

Verwandte Themen