반응형
주석으로 분석을 달음
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace study14
{
public class DataManager
{
private static DataManager instance = new DataManager(); // ① 인스턴스를 한번에 만든것
private List<RawData> list = new List<RawData>();
private DataManager()
{
}
//public static DataManager GetInstance() // ① 이 부분을 생략하고 제일 첫 위줄에서 바로 인스턴스화
//{
// if (DataManager.instance == null)
// DataManager.instance = new DataManager();
// return DataManager.instance;
//}
public void LoadData<T>(string path) where T : RawData // 제네릭을 사용하여, T는 형식매개변수로 들어오는 형식 받고, path는 경로를 받는다.
{
var json = this.ReadFile(path); //경로값을 ReadFile의 메서드로 보내서 json 파일의 데이터를 json 변수로 리턴 받음
var arr = JsonConvert.DeserializeObject<T[]>(json);// 역직렬화를 써서 arr에 넣어줌.
this.list.AddRange(arr); //AddRange (맨 마지막에 넣기)를 써서 배열에 마지막에 값을 넣음
}
public IEnumerable<T> GetDatas<T>(int id)
// 반환형식 메소드이름 변수 가 기본적인 메소드 형식
{ //IEnumerable<T> T 형식매개 변수가 열거가능한 형식으로 반환한다는 의미 현재이 메소드에선
return this.list.OfType<T>(); //OfType<T>은 모든 형식을 <T> 형식으로 변환하려고 시도하는 것을 의미한다.
//즉, 리스트에 있는 형식을 모두 들어오는 T 형식으로 변환하는 것이라고 생각하면된다.
}
public T GetData<T>(int id) where T : RawData
{
}
private string ReadFile(string path) {
string json = File.ReadAllText(path);
return json;
}
}
}
반응형
'C# > C#언어' 카테고리의 다른 글
0329_ 노드 (0) | 2021.03.29 |
---|---|
0324_ ★ 이벤트의 구조 !! (0) | 2021.03.24 |
0324 _ 복습 // (0) | 2021.03.24 |
0322 _ delegates 연습예제 (0) | 2021.03.22 |
0318_ 다차원 _ 2차원 배열 isometric view (0) | 2021.03.18 |