반응형

프로그래밍/C# 31

[C#] List에 추가된 구조체의 값

많은 사람들이 아는 것과 같이 Struct는 Value Type이고 Class는 Reference Type하여 대입할 때 복사되는 방법이 다르다. 이 글에서 Value Type과 Reference Type을 설명하기엔 내가 너무 귀찮고 잘 정리하신 어떤분의 블로그를 첨부한다. https://mathmakeworld.tistory.com/79 C# Value Type과 Reference Type C#을 공부하다 보면 Value Type(값 형식)과 Reference Type(참조 형식)이라는 것을 듣게 됩니다. 이런 것들을 모르고 코딩해도 대체로 원하는 결과를 얻을 수 있습니다. 하지만 가끔가다 코드가 이해하기 mathmakeworld.tistory.com 자. 이제 본론으로 들어간다. public str..

프로그래밍/C# 2022.01.25

[C#] Newtonsoft Json 상속 대상까지 Serialize하기

다음과 같은 구조가 있다고 해보자. public class Box { public double Length { get; set; } public double Width { get; set; } public double Height { get; set; } } public class Carton : Box { public int Index { get; set; } } Carton은 Box를 상속 받는다. 이러한 객체의 값을 Serialize하게 되면 아래와 같은 형태로 나온다. { "Index": 1, "Length": 800.0, "Width": 600.0, "Height": 1400.0 } 위의 Json 정보만으로는 이것이 Carton인지 다른 어떤 객체인지 확인이 불가능하다. var settings ..

프로그래밍/C# 2022.01.18

[C#] Newtonsoft private set 값 DeserialzeObject 방법

Class나 struct의 Property를 private set으로 설정한 뒤 DeserialzeObject를 수행하게 되면 제대로 값을 가져오지 못한다. 이것은 해당 Property가 Json Property라고 인식을 못해서 생기는 문제이다. 아래와 같은 방법으로 간단히 해결가능하다. public class Box { [JsonProperty] public double Length { get; private set; } [JsonProperty] public double Width { get; private set; } [JsonProperty] public double Height { get; private set; } } 해당 프로퍼티를 Json property라고 설정을 해두면 처리 완료!

프로그래밍/C# 2022.01.18

[C#] Object 안에 Array 데이터 가져오기

가끔 object 타입으로 Array 값이 들어있는 경우가 있다. 일반적인 상황에서는 변수형으로 캐스팅하면되지만 Array는 IEnumerable으로 캐스팅하여 처리한다. 아래의 예는 arrayObject 내에 배열로 3개의 데이터가 arrayObject라는 object 안에 있을때 값을 얻는 방법이다. var sizeList = arrayObject as IEnumerable; double[] size = new double[3]; int count = 0; foreach (var item in sizeList) { size[count] = Convert.ToDouble(item); count++; }

프로그래밍/C# 2021.07.21

[C#] Path에서 각종 경로 추출

자주 쓰이는 것들을 아래와 같이 정리해보았다. string path = @"T:\test_path\path1\item.json"; // 파일명 추출 Path.GetFileName(path); // item.json // 확장자 추출 Path.GetExtension(path); // .json // 확장자 없이 파일명만 Path.GetFileNameWithoutExtension(path); // item // 경로만 추출 Path.GetDirectoryName(path); // T:\test_path\path1 // 현재 실행 경로 가져오기 System.IO.Directory.GetCurrentDirectory(); System.Environment.CurrentDirectory;

프로그래밍/C# 2021.06.15

[C#] 디자인패턴 - Singleton

간단하게 싱글톤을 클래스를 선언하는 방법을 알아본다. 나는 주로 싱글톤을 쓸 때, 다양한 화면에서 데이터가 공유 관리되어야 하거나 통신용 객체를 만들거나, DAO생성을 할 때 주로 쓴다. 싱글톤 객체 생성 public sealed class DataManager { private static readonly DataManager _instance = new DataManager(); public static DataManager GetInstance() { return _instance; } private DataManager() { } } 객체 불러오기 class MainWindowViewModel : BindableBase { private DataManager _dm; public MainWindo..

프로그래밍/C# 2021.05.11

[C#] 객체의 값 변경된 내용만 추출하기

Log 처리에 모든 값을 다 넣으면 좋긴하겠지만 객체의 내용이 너무나 많다면 보기에도 부담되고 데이터 쌓을때도 부담된다. 어떻게 할까 고민하다가 타겟과 소스를 기준으로 양 객체 데이터를 기반으로 변경된 값만 추출하는 함수를 만들었다. private Dictionary DictionaryFromType(object atype) { if (atype == null) return new Dictionary(); Type t = atype.GetType(); PropertyInfo[] props = t.GetProperties(); Dictionary dict = new Dictionary(); foreach (PropertyInfo prp in props) { object value = prp.GetValue..

프로그래밍/C# 2021.05.11
반응형