728x90
반응형
728x170
▶ Program.cs
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Xml.Serialization;
namespace TestProject
{
/// <summary>
/// 프로그램
/// </summary>
class Program
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Static
//////////////////////////////////////////////////////////////////////////////// Private
#region Field
/// <summary>
/// 사용자 리스트
/// </summary>
private static List<UserInfoUser> _userList = null;
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Static
//////////////////////////////////////////////////////////////////////////////// Private
#region 프로그램 시작하기 - Main()
/// <summary>
/// 프로그램 시작하기
/// </summary>
static void Main()
{
_userList = Deserialize("UserInfo.xml");
foreach(UserInfoUser user in _userList)
{
Console.WriteLine("사용자 ID : {0}", user.UserID );
Console.WriteLine("패스워드 : {0}", user.Password);
Console.WriteLine("사용자 타입 : {0}", user.UserType);
Console.WriteLine();
}
//Serialize(_userList, "UserInfoNew.xml");
}
#endregion
#region 직렬화 하기 - Serialize<T>(sourceObject, filePath)
/// <summary>
/// 직렬화 하기
/// </summary>
/// <typeparam name="T">객체 타입</typeparam>
/// <param name="sourceObject">소스 객체</param>
/// <param name="filePath">파일 경로</param>
private static void Serialize<T>(T sourceObject, string filePath)
{
XmlSerializer serializer = new XmlSerializer(typeof(UserInfo));
using(FileStream stream = new FileStream(filePath, FileMode.Create))
{
using(StreamWriter writer = new StreamWriter(stream))
{
stream.Position = 0;
serializer.Serialize(writer, sourceObject);
}
}
}
#endregion
#region 역직렬화 하기 - Deserialize<T>(filePath)
/// <summary>
/// 역직렬화 하기
/// </summary>
/// <typeparam name="T">객체 타입</typeparam>
/// <param name="filePath">파일 경로</param>
/// <returns>타겟 객체</returns>
private static T Deserialize<T>(string filePath)
{
T targetObject = default(T);
XmlSerializer serializer = new XmlSerializer(typeof(UserInfo));
using(FileStream stream = new FileStream(filePath, FileMode.Open))
{
using(StreamReader reader = new StreamReader(stream))
{
stream.Position = 0;
targetObject = (T)serializer.Deserialize(reader);
}
}
return targetObject;
}
#endregion
#region 직렬화 하기 - Serialize(userList, filePath)
/// <summary>
/// 직렬화 하기
/// </summary>
/// <param name="userList">사용자 리스트</param>
/// <param name="filePath">파일 경로</param>
private static void Serialize(List<UserInfoUser> userList, string filePath)
{
UserInfo userInfo = new UserInfo();
userInfo.Items = userList.ToArray();
Serialize<UserInfo>(userInfo, filePath);
}
#endregion
#region 역직렬화 하기 - Deserialize(filePath)
/// <summary>
/// 역직렬화 하기
/// </summary>
/// <param name="filePath">파일 경로</param>
/// <returns>사용자 리스트</returns>
private static List<UserInfoUser> Deserialize(string filePath)
{
UserInfo userInfo = Deserialize<UserInfo>(filePath);
return userInfo?.Items?.ToList();
}
#endregion
}
}
728x90
반응형
그리드형(광고전용)
'C# > Common' 카테고리의 다른 글
[C#/COMMON] 영어/숫자 문자 여부 구하기 (0) | 2017.12.24 |
---|---|
[C#/COMMON] 숫자 문자 여부 구하기 (0) | 2017.12.24 |
[C#/COMMON] 영어 문자 여부 구하기 (0) | 2017.12.24 |
[C#/COMMON] 콘솔 사용하기 (0) | 2017.12.17 |
[C#/COMMON] 사운드 볼륨 설정하기/구하기 (0) | 2017.12.17 |
[C#/COMMON] XML 직렬화/역직렬화 하기 (0) | 2017.12.17 |
[C#/COMMON] XSD 도구를 사용해 .xsd 및 .cs 파일 생성하기 (0) | 2017.12.17 |
[C#/COMMON] 한자를 한글로 변환하기 (0) | 2017.12.14 |
[C#/COMMON] 호스트 IP 주소 구하기 (0) | 2017.11.30 |
[C#/COMMON] 윈도우즈 시작시 애플리케이션 자동 실행하기 (0) | 2017.11.27 |
[C#/COMMON] 심층 신경망(Deep Neural Network) 알고리즘 사용하기 (0) | 2017.11.09 |
댓글을 달아 주세요