728x90
#region 데이터 영역
[Serializable]
public class Student
{
public int id { get; set; }
public string name { get; set; }
public string age { get; set; }
}
[Serializable]
public class StudentData : ILoader<int, Student>
{
List<Student> _students = new List<Student>();
public Dictionary<int, Student> MakeDictionary()
{
Dictionary<int, Student> students = new Dictionary<int, Student>();
foreach (Student student in _students)
students.Add(student.id, student);
return students;
}
}
#endregion
#region 여러개의 Json데이터 위치 경로 저장 Json
[Serializable]
public class ConfigPath
{
public string path { get; set; }
}
public class ConfigManager
{
public static ConfigPath Config { get; private set; }
public static void LoadConfig(string pathe)
{
string text = File.ReadAllText($"{pathe}/config.json"); // Debug에 경로 json 읽어오는 부분
Config = Newtonsoft.Json.JsonConvert.DeserializeObject<ConfigPath>(text);
}
}
#endregion
#region 파싱 영역
public interface ILoader<T1, T2>
{
Dictionary<T1, T2> MakeDictionary();
}
public class DataManager
{
public static Dictionary<int, Student> StudentDic { get; private set; } = new Dictionary<int, Student>();
public static void LoadData()
{
StudentDic = LoadJson<StudentData, int, Student>("StudentData").MakeDictionary();
}
public static Loader LoadJson<Loader, T1, T2>(string path) where Loader : ILoader<T1, T2>
{
string text = File.ReadAllText($"{ConfigManager.Config.path}/{path}.json");
return Newtonsoft.Json.JsonConvert.DeserializeObject<Loader>(text);
}
}
#endregion
class Program
{
static void Main(string[] args)
{
ConfigManager.LoadConfig("");
DataManager.LoadData();
foreach (Student student in DataManager.StudentDic.Values)
{
Console.WriteLine($"{student.id}, {student.name}, {student.age}");
}
}
}
728x90
'VisualStudio > C#서버' 카테고리의 다른 글
[C#서버] Akka.net과 Actor모델 Part.1 (1) | 2024.09.12 |
---|---|
[C#서버] 실시간 서버 만드는 법 예제 (0) | 2023.01.03 |
[C#서버] 서버 개발 순서 (0) | 2022.11.29 |
[C#서버] 구글 프로토 버퍼(Google Protobuf C#) (0) | 2022.11.18 |
[C#서버] Thread.sleep 사용하지 않고 특정시간마다 이벤트 발생방법 (0) | 2022.11.02 |