일반적으로 여러개의 class library혹은 여러개의 class 내부에서 NLog를 사용해 log message를 생성해 내게되는데, 매번 log message가 발생 할 때 마다 해당 메세지를 가공해서 GUI상에 뿌려준다거나 GRPC나 WebSocket 혹은 Kafka같은 Message Broker로 publish하는 기능이 필요할 때가 있습니다. 이럴 때 아래와같이 NLog의 MethodCallTarget 클래스를 사용하면 쉽게 구현이 가능합니다. // Callback 함수를 정의합니다. var target = new MethodCallTarget("LogNotify", async (logEvent, parameters) => { // 여기서 본인이 원하는 처리를 하면 됩니다. 내부에 비동기 호출..
1. 고전적인 방법 임시 변수 하나를 더 선언한 다음 두 변수 중 하나의 값 혹은 참조를 복사해두고 swap 하는 방법 var a = 10; var b = 20; var temp = a; a = b; b = temp; 2. 현대적인 방법 (C# 7.0 이상) 튜플(Tuple)을 사용하면 한 줄로 표현이 가능합니다. (b, a) = (a, b)
종종 가변적인 구조의 JSON 데이터를 C#에서 다뤄야 할 경우나 혹은 JSON내의 특정 데이터만 추출 혹은 수정을 원할경우 일일이 맵핑할 class들을 만들어서 JSON 데이터를 다루기보다 JObject로 parsing 후 아래와 같이 SelectToken/SelectTokes 함수들을 사용해서 원하는 token을 찾아서 값을 가져오거나 조작하는 것이 훨씬 효율적입니다. 원문: https://www.newtonsoft.com/json/help/html/SelectToken.htm 1. SelectToken SelectToken은 JToken을 리턴하는 method이며 하위 토큰에 대한 문자열 경로를 사용합니다. SelectToken은 하위 토큰을 반환하거나 경로 위치에서 토큰을 찾을 수 없는 경우 nu..
보통 JSON Serialization 후 텍스트 파일 형태로 저장하거나 DB에 저장하거나 하는데, enum 값이 숫자 형태로 저장되어서 JSON 문자열을 열어볼 때 readbility가 떨어집니다. 그래서 enum 타입 변수의 값이 문자열 형태로 저장 하는 경우가 많은데요, 그럴 때 아래와 같이 attribute를 특정 멤버 변수에 선언해주면 됩니다. using Newtonsoft.Json; using Newtonsoft.Json.Converters; public enum CompanyType { Apple, Samsung, } public class Company { [JsonConverter(typeof(StringEnumConverter))] public CompanyType CompanyType..