C#/C#언어

0325_와우퀘스트업그레이드 버전 분석중...

minquu 2021. 3. 25. 18:22
반응형

 

주석으로 분석을 달음

 

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