사전 개체를 web.config 파일에 저장하려면 어떻게 해야 합니까?
웹 구성 파일에 간단한 키/값 문자열 사전을 저장하고 싶습니다.Visual Studio를 사용하면 문자열 컬렉션을 쉽게 저장할 수 있지만(아래 샘플 참조) 사전 컬렉션을 사용하는 방법을 잘 모르겠습니다.
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>value1</string>
<string>value2</string>
<string>value2</string>
</ArrayOfString>
왜 바퀴를 재창조해야 합니까?AppSettings 섹션은 사전과 유사한 데이터를 구성 파일에 정확히 저장하기 위한 목적으로 설계되었습니다.
AppSettings 섹션에 너무 많은 데이터를 저장하지 않으려면 다음과 같이 관련 값을 해당 섹션으로 그룹화할 수 있습니다.
<configuration>
<configSections>
<section
name="MyDictionary"
type="System.Configuration.NameValueFileSectionHandler,System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</configSections>
<MyDictionary>
<add key="name1" value="value1" />
<add key="name2" value="value2" />
<add key="name3" value="value3" />
<add key="name4" value="value4" />
</MyDictionary>
</configuration>
다음을 사용하여 이 컬렉션의 요소에 액세스할 수 있습니다.
using System.Collections.Specialized;
using System.Configuration;
public string GetName1()
{
NameValueCollection section =
(NameValueCollection)ConfigurationManager.GetSection("MyDictionary");
return section["name1"];
}
줄리엣의 대답은 정확하지만 참고로 외부 구성을 추가할 수도 있습니다..config파일, 설정을 통해web.config다음과 같이:
<?xml version="1.0"?>
<configuration>
<configSections>
<!-- blah blah the default stuff here -->
<!-- here, add your custom section -->
<section name="DocTabMap" type="System.Configuration.NameValueFileSectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</configSections>
<!-- your custom section, but referenced in another file -->
<DocTabMap file="CustomDocTabs.config" />
<!-- etc, remainder of default web.config is here -->
</configuration>
그럼, 당신의CustomDocTabs.config다음과 같이 표시됩니다.
<?xml version="1.0"?>
<DocTabMap>
<add key="A" value="1" />
<add key="B" value="2" />
<add key="C" value="3" />
<add key="D" value="4" />
</DocTabMap>
이제 다음을 통해 코드로 액세스할 수 있습니다.
NameValueCollection DocTabMap = ConfigurationManager.GetSection("DocTabMap") as NameValueCollection;
DocTabMap["A"] // == "B"
사용자 정의 섹션을 구현해야 합니다(구성 섹션 디자이너 참조).
당신이 정말 원하는 건...다음과 유사합니다.
<MyDictionary>
<add name="Something1" value="something else"/>
<add name="Something2" value="something else"/>
<add name="Something3" value="something else"/>
</MyDictionary>
여기서 XmlAttribute "name"은 코드 뒤에 둘 이상을 둘 수 없는 Key입니다.동시에 컬렉션 내 사전도 사전인지 확인합니다.
이 모든 작업을 이 도구로 수행하고 필요에 따라 공백을 메울 수 있습니다.
응용 프로그램 설정에서 시스템을 사용할 수 있습니다.수집.특수화된.문자열 컬렉션
<X.Properties.Settings>
<setting name="ElementsList" serializeAs="Xml">
<value>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>Element1</string>
<string>Element2</string>
</ArrayOfString>
</value>
</setting>
</X.Properties.Settings>
목록에 대한 액세스:
var element = Settings.Default.ElementsList[index]
사전을 직접 저장하는 방법은 잘 모르겠지만 문자열 배열을 사용하여 사전을 쉽게 저장할 수 있습니다.모든 키, 값 쌍에 대해 키를 첫 번째 문자열로 저장하고 값을 두 번째 문자열로 저장합니다.그런 다음 사전을 재구성할 때 이 인코딩을 실행 취소할 수 있습니다.
static Dictionary<string,string> ArrayToDictionary(string[] data) {
var map = new Dictionary<string,string>();
for ( var i= 0; i < data.Length; i+=2 ) {
map.Add(data[i], data[i+1]);
}
return map;
}
언급URL : https://stackoverflow.com/questions/338242/how-do-i-store-a-dictionary-object-in-my-web-config-file
'programing' 카테고리의 다른 글
| 찾기 명령을 사용하여 실행 파일 검색 (0) | 2023.07.10 |
|---|---|
| 여러 열의 집합 수집 (0) | 2023.07.10 |
| 테이블에 허용되는 최대 열 수는 몇 개입니까? (0) | 2023.07.10 |
| C 부동 소수점을 int로 변환 (0) | 2023.07.10 |
| Spring Boot을 PostgreSQL에 자동으로 다시 연결하려면 어떻게 해야 합니까? (0) | 2023.07.10 |