설정값 저장을 위한 ini 파일 과 yaml 파일 사용방법 - C#
Software/C#2023. 11. 29. 14:47
반응형
장비제어 프로그램 개발시에 시스템의 하드웨어 설정값등을 저장하고 불러 오는 용도로 ini 파일 저장과 yaml 파일 저장 방법을 사용할 수 있도록 테스트 프로그램을 작성해 보았습니다.
ini 파일 저장은 인터넷에 있는 Class 를 다운받아 사용하였습니다. yaml 은 YamlDotNet 라이브러리를 사용하였습니다.
코드 작성이나 향후 항목 변경이 되었을 경우 코드 변경에서는 yaml이 편하고 좋습니다. 하지만 프로그램 사용자가 yaml 데이타를 직접 수정할 경우에는 규칙을 지켜서 수정해야 하는 번거로움은 좀 있네요..
파일에 저장되는 형태는 아래와 같습니다.
ini 저장 데이타 파일
[Temperature]
Offset-1=12.3
Offset-2=53.987
[System]
Name=test
Item-1=0
yaml 저장 데이타 파일
temperature:
Offset1: 3
Offset2: 4
system:
Name: bbb
Item1: 3
Item2: 0
ListItems:
- 11
- 22
- 33
아래 코드는 yaml 사용에 대한 내용입니다.
public class MachineData
{
public class Temperature
{
public double Offset1 { get; set; }
public double Offset2 { get; set; }
}
public class System
{
public string Name { get; set; }
public int Item1 { get; set; }
public int Item2 { get; set; }
public List<double> ListItems { get; set; }
public System()
{
ListItems = new List<double>();
}
}
public Temperature temperature = new Temperature();
public System system = new System();
}
public class YamlControl<T>
{
public void SaveYaml(string FileName, T data)
{
var serializer = SerializeToYaml(data);
using StreamWriter sw = new StreamWriter(FileName);
sw.Write(serializer);
}
public T LoadYaml(string FileName)
{
T machine = DeserializeFromYaml<T>(FileName);
return machine;
}
private string SerializeToYaml<T>(T obj)
{
var serializer = new SerializerBuilder().Build();
return serializer.Serialize(obj);
}
// Deserialize YAML to an object
private T DeserializeFromYaml<T>(string yaml)
{
var deserializer = new DeserializerBuilder().Build();
return deserializer.Deserialize<T>(File.ReadAllText(yaml));
}
}
반응형
'Software > C#' 카테고리의 다른 글
사칙연산을 통해 알아보는 Lambda 와 Func 델리게이트 활용 - C# (0) | 2023.12.23 |
---|---|
항목이 여러개인 List<>에서 각각의 항목을 나누어서 배열로 변환 C# (0) | 2023.12.12 |
Tag 속성을 이용하여 RadioButton 사용 코딩 줄이기 #2 - C# (0) | 2023.08.29 |
Stopwatch 를 이용한 Timeout 기능 구현 - C# (0) | 2023.08.23 |
OpenCVSharp 카메라 제어 #5 ( Auto Focusing ) (0) | 2023.07.27 |
댓글()