Có một bài viết tốt về lưu trữ danh sách (hoặc bất kỳ đối tượng tùy chỉnh) trong file app.config của bạn trong Best Way Of Saving Lists in App.Config
Về cơ bản, bạn tạo một đối tượng đại diện cho dữ liệu.
public class MyConfig
{
public string[] myList;
public string someOtherValueIfYouWant;
}
Và viết một handler cấu hình cho nó ...
public class ConfigSectionHandler : IConfigurationSectionHandler
{
public const string SECTION_NAME = "MyConfig";
public object Create(object parent, object configContext, XmlNode section)
{
string szConfig = section.SelectSingleNode("//MyConfig").OuterXml;
MyConfig retConf = null;
if (szConfig != string.Empty || szConfig != null)
{
XmlSerializer xsw = new XmlSerializer(typeof(MyConfig));
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(szConfig));
ms.Position = 0;
retConf = (MyConfig)xsw.DeSerialize(ms);
}
return retConf;
}
}
Và điều này cho phép bạn đặt XML sau trong file app.config của bạn ...
ứng dụng biết chính xác.cấu hình về phần cấu hình mát mẻ của bạn
<configSections>
<section name="MyConfig" type="ConfigSectionHandler,someAssembly" />
</configSection>
Và sau đó thêm phần cấu hình của bạn ...
<MyConfig>
<myList>First one</myList>
<myList>Second one</myList>
<myList>Keep going</myList>
<myList>And so on</myList>
<someOtherValueIfYouWant>some non array config</someOtherValueIfYouWant>
</MyConfig>
Danh sách được phân tách bằng dấu phẩy sẽ ảnh hưởng như thế nào đến hiệu suất? Tôi đã sử dụng chuỗi phân cách bằng dấu phẩy trong các tệp cấu hình trước và không nhận thấy bất kỳ vấn đề hiệu suất nào. – Tim
@Tim - Tôi đồng ý rằng hiệu suất nếu có lẽ không phải là trình điều khiển cho điều này, nhưng đối với 161 mục, danh sách được phân cách bằng dấu phẩy không phải là giải pháp thanh lịch nhất trong tệp app.config của bạn. Cho rằng app.config là XML và sẽ không được tuần tự hóa, tốt hơn hết là lưu trữ dữ liệu của bạn trong XML bên trong nó. – Fenton