2012-05-02 33 views
21

Tôi muốn lưu trữ mảng chuỗi một chiều làm mục nhập trong số appSettings của mình. Tôi không thể chỉ đơn giản là tách các phần tử với , hoặc | vì chính các phần tử đó có thể chứa các ký tự đó.Chuỗi chuỗi cửa hàng Trong appSettings?

Tôi đã nghĩ đến việc lưu trữ mảng dưới dạng JSON rồi deserializing nó bằng cách sử dụng JavaScriptSerializer.

Có cách nào "đúng"/tốt hơn để thực hiện việc này không?

(JSON Ý tưởng của tôi cảm thấy kinda hacky)

+1

Tôi khuyên bạn nên sử dụng công cụ JSON của Newton, nếu bạn đi theo tuyến đường đó ... –

Trả lời

20

Bạn có thể sử dụng AppSettings với một System.Collections.Specialized.StringCollection.

var myStringCollection = Properties.Settings.Default.MyCollection; 
foreach (String value in myCollection) 
{ 
    // do something 
} 

Mỗi giá trị được phân tách bằng một dòng mới.

Dưới đây là một ảnh chụp màn hình (Đức IDE nhưng nó có thể hữu ích nào)

enter image description here

+0

Điều này có thể được sử dụng cho các số nguyên không? – akd

+0

@akdurmus: chỉ khi bạn chuyển đổi chúng thành int: 'int [] ints = new int [strings.Count]; for (int i = 0; i

+0

Tôi dường như tìm thấy câu trả lời hay hơn và được đăng bên dưới. Cảm ơn bạn @Tim – akd

5

Bạn cũng có thể xem xét sử dụng phần cấu hình tùy chỉnh/Bộ sưu tập cho mục đích này. Đây là một mẫu:

<configSections> 
    <section name="configSection" type="YourApp.ConfigSection, YourApp"/> 
</configSections> 

<configSection xmlns="urn:YourApp"> 
    <stringItems> 
    <item value="String Value"/> 
    </stringItems> 
</configSection> 

Bạn cũng có thể kiểm tra trên tuyệt vời Visual Studio add-in này cho phép bạn thiết kế đồ họa Phần NET Cấu hình và tự động tạo ra tất cả các mã yêu cầu và một định nghĩa schema (XSD) cho họ.

9

Đối với số nguyên tôi đã tìm thấy cách sau nhanh hơn.

Trước hết, tạo khóa ứng dụngSettings với các giá trị số nguyên được phân tách bằng dấu phẩy trong app.config của bạn.

<add key="myIntArray" value="1,2,3,4" /> 

Sau đó tách và chuyển đổi các giá trị vào mảng int bằng cách sử dụng LINQ

int[] myIntArray = ConfigurationManager.AppSettings["myIntArray"].Split(',').Select(n => Convert.ToInt32(n)).ToArray(); 
4

Đối với chuỗi nó rất dễ dàng, chỉ cần thêm dòng sau vào web.config tập tin của bạn:

<add key="myStringArray" value="fred,Jim,Alan" /> 

và sau đó bạn có thể truy xuất giá trị vào một mảng như sau:

myArray = ConfigurationManager.AppSettings("myStringArray").Split(",") 
+0

Bạn có nghĩa là '[...]' xung quanh '" MyStringArray "', không phải '(...)', hay tôi thiếu một cái gì đó? – WAF

+0

Nó phải là 'var myArray = ConfigurationManager.AppSettings [" MyStringArray "]. Split (',');' – dev

Các vấn đề liên quan