-
카테고리
-
세부 분야
게임 프로그래밍
-
해결 여부
미해결
LoadXml 함수 질문입니다.
22.12.26 17:21 작성 22.12.26 17:30 수정 조회수 281
0
private Loader LoadXml<Loader, Key, Item>(string name) where Loader : ILoader<Key, Item>, new()
{
XmlSerializer xs = new XmlSerializer(typeof(Loader));
TextAsset textAsset = Resources.Load<TextAsset>("Data/" + name);
using (MemoryStream stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(textAsset.text)))
return (Loader)xs.Deserialize(stream);
}
제공해주신 코드가 Unity강좌에서 JsonUtility 다루셨을 때 코드와 비슷해서 어느 정도 이해할 수 있었습니다. 하지만 코드에서 궁금한 부분이 존재해서 질문 남깁니다.
1.기존에 배웠던 코드와는 다르게 Loader where 조건 부분 마지막에 new()는 어떤 의미 인가요?
using 부분에 정확한 의미를 모르겠습니다. 대략 리딩해보면 TextAsset을 MemoryStream 형식으로 변형해서 역직렬화하는 것 같은데 MemoryStream이 어떤 것인지 궁금합니다.
항상 좋은 강의 올려주셔서 감사합니다.
답변을 작성해보세요.
0
Rookiss
지식공유자2022.12.26
1.
이런 상황에서는 where new() C# 을 구글에 검색하시면 됩니다.
https://learn.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/new-constraint
Loader라는 애가 기본 생성자로 new()를 할 수 있어야 한다! 는 제약입니다.
2.
1보다는 조금 어려운 상황인데, 구글에 C# using dispose 를 검색하시면 됩니다.
객체 사용이 끝났을 때 자동으로 메모리를 정리하거나 Stream를 정리해주는(?) 기능과 연관이 있습니다.
ji980207
질문자2022.12.27
이해했습니다. 감사합니다. 한 가지 더 질문이 있는데 그렇다면 UTF8로 인코딩 하는 이유는 단순 XML 파일에 있는 텍스트를 읽어올 때 한글이 깨지는 것을 방지하기 위해 사용하는 것일까요 ?
답변 1