2014-05-06 12 views
11

Jak uzyskać informacje o tablicy lub liście w pliku app.config? Chcę, aby użytkownik mógł umieścić tak wiele adresów IP, jak to możliwe (lub w razie potrzeby). Mój program po prostu bierze wszystko, co określono w pliku app.config. Jak to zrobić?C# App.Config z tablicą lub listą danych takich jak

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 
    <add key="ip" value="x" /> 
    <add key="ip" value="y" /> 
    <add key="ip" value="z" /> 
    </appSettings> 
</configuration> 



public string ip = ConfigurationManager.AppSettings["ip"]; 
+1

Napisz swoją własną sekcję konfiguracji. [Tutaj] (http://haacked.com/archive/2007/03/12/custom-configuration-sections-in-3-easy-steps.aspx/) początek. [This one] (http://www.codeproject.com/Articles/37776/Writing--complex-custom-configuration-section) pokazuje, jak przechodzić między nimi – Jonesopolis

+0

@Jonesy Lub użyj bezproblemowego 'StringCollection' typ ustawień ... –

Odpowiedz

18

Najprostszym sposobem jest lista oddzielona przecinkami w pliku App.config. Oczywiście możesz napisać własną sekcję konfiguracji, ale jaki jest sens robienia tego, jeśli jest to tylko tablica łańcuchów, które będzie proste.

<configuration> 
    <appSettings> 
    <add key="ips" value="z,x,d,e" /> 
    </appSettings> 
</configuration> 

public string[] ipArray = ConfigurationManager.AppSettings["ips"].Split(','); 
11

Można ustawić typ ustawienia w kreatorze ustawień do StringCollection, który pozwala na tworzenie listy ciągów.

Screenshot

można później dostęp do poszczególnych wartości jako Properties.Settings.Default.MyCollection[x].

W pliku app.config ten wygląda następująco:

<setting name="MyCollection" serializeAs="Xml"> 
<value> 
    <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
     <string>Value1</string> 
     <string>Value2</string> 
    </ArrayOfString> 
</value> 
</setting> 
+0

Kiedy próbuję wywołać ustawienie przy użyciu właściwości Properties.Settings.MyCollection [x], oznacza to, że odwołanie do obiektu jest wymagane w przypadku niestatycznego pola, metody lub właściwości? jakieś pomysły? –

+0

ahh ma to, coś w stylu "StringCollection someRegKeys = new Properties.Settings(). RegKeys;" –

+0

Mam błąd w mojej odpowiedzi. Musi to być 'Properties.Settings.Default.xyz'. –

1

W app.config,

<add key="YOURKEY" value="a,b,c"/> 

W języku C#,

STRING tablicy:

string[] InFormOfStringArray = ConfigurationManager.AppSettings["YOURKEY"].Split(',').Select(s => s.Trim()).ToArray(); 

LISTA :

List<string> list = new List<string>(InFormOfStringArray);