당신이 해결하려고 시도하는 문제가 이미 System.Configuration 네임 스페이스에서 해결되었다고 생각합니까?
Jon Rista의 Code Project this article은 Configuration 클래스를 사용하는 방법에 대한 개요를 제공하며 사용자가 원하는 것을 성취하는 데 도움이 될 것이라고 생각합니다.
이것이 정확히 필요하지 않은 경우 프로젝트의 직렬화 어셈블리를 만들면 구성 클래스가 포함 된 어셈블리를 만들 수 있습니다.
컴파일하는 동안 deserializer 및 serializer 클래스를 만들지 않았을 때마다 deserialization 및 serialization 문제가 발생했습니다. 시간이 지나면 런타임 중에 생성되는 XmlSerialization 클래스가 항상 생성되거나 사용 가능한 것은 아니므로 오류가 발생할 수 있습니다.
가장 쉬운 방법은 새 어셈블리 프로젝트를 만들고 공용 읽기/쓰기 속성이있는 Serializeable() 클래스를 추가하는 것입니다. 그런 다음
sgen/A ... 그래서 같은 포스트 빌드 이벤트에 시리얼 어셈블리를 생성 sgen을 사용할 수 있습니다 : $ (TargetFileName)/힘 그리고/자세한
당신이 당신의 직렬화 어셈블리를 참조해야합니다 AssemblyName.Serializable.Serializers가 bin 또는 probing 경로에서 사용 가능한 한 런타임에서 동적 어셈블리가 만들어지지 않고 오류가 발생하지 않을 것입니다.
일단 완료되면 직렬화 어셈블리에 포함 된 유형을 직렬화 및 비 직렬화 할 수 있습니다.
일렬 ....
IsolatedStorageFile isolatedStorage = IsolatedStorageFile.GetUserStoreForAssembly();
using (IsolatedStorageFileStream stream = new
IsolatedStorageFileStream(key, FileMode.Create, isolatedStorage))
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
serializer.Serialize(stream, value);
}
직렬화 복원
using (IsolatedStorageFile isolatedStorage =
IsolatedStorageFile.GetUserStoreForAssembly())
{
using (IsolatedStorageFileStream stream =
new IsolatedStorageFileStream(
key, FileMode.OpenOrCreate, FileAccess.ReadWrite, isolatedStorage))
{
if (stream.Length > 0)
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
return (T)serializer.Deserialize(stream);
}
else
{
return default(T);
}
}
}
감사합니다,하지만하지 무슨 뜻 이잖아. 내가 원하는 것은 C# 클래스로 deSerialize하는 것이지만, 단지 Config의 콜렉션을 갖는 대신에, 어떻게 든 요소에 대한 name 속성을 가져야 만한다. –
아마도 도움이 될 수도 있습니다. http://stackoverflow.com/questions/1081325/c-how-to-xml-deserialize-object-itself 다시 말해서 올바르게 수행하려면 스키마를 사용하십시오. – Sorantis