전체 글 68

C# 기초부터 고급까지 Chapter 3.3. Expression Tree로 컴파일 타임 코드 생성

📘 Chapter 3.3: Expression Tree로 컴파일 타임 코드 생성✅ 이 챕터에서 배울 것 Expression Tree란 무엇인가? Func와 Expression> 차이 동적으로 조건 쿼리 만들기 메서드 호출도 Expression으로 표현 가능 실전 예제 – 동적 필터링, 간단한 DSL 리플렉션보다 빠른 이유와 주의점1️⃣ Expression Tree란?C# 코드를 트리 형태로 표현한 객체 구조Expression> expr = x => x + 1;이 코드는 실제로 이렇게 분해된다: 파라미터 x 연산자 + 상수 1→ 전부 트리 형태로 분해돼서 저장됨📦 표현식 구조 살펴보기Expression> expr = x => x + 1;Console.WriteLine(expr.Body)..

C# 2025.05.05

C# 기초부터 고급까지 Chapter 3.2. Reflection & Dynamic Type – 런타임 메타프로그래밍

📘 Chapter 3.2: Reflection & Dynamic Type – 런타임 메타프로그래밍✅ 이 챕터에서 배울 것 리플렉션(Reflection)이란? 어떤 상황에서 쓰는가 (실무 사례) Type, PropertyInfo, MethodInfo 사용법 dynamic 키워드와 ExpandoObject 실전 시나리오 예제 (DTO ↔ Entity, 자동 매핑 등) 성능 이슈와 개선 전략1️⃣ 리플렉션(Reflection)이란?실행 중인 객체, 타입, 메서드, 속성 정보를 코드에서 직접 들여다보고 조작하는 기술C#에서는 System.Reflection 네임스페이스를 통해 사용한다.📦 간단 예제Type type = typeof(string);Console.WriteLine(type.FullNa..

C# 2025.05.05

C# 기초부터 고급까지 Chapter 3.1. Span , Memory , Unsafe – 퍼포먼스 챙기는 C# 코드

📘 Chapter 3.1: Span , Memory , Unsafe – 퍼포먼스 챙기는 C# 코드✅ 이 챕터에서 배울 것 GC 힙이 아닌 스택 메모리 직접 다루기 Span / Memory 차이와 쓰임 stackalloc, ref struct의 역할 unsafe 코드로 포인터 직접 다루는 법 안전성과 성능의 균형 실무 예제 및 성능 비교 (BenchmarkDotNet)1️⃣ 왜 이걸 배워야 하나?✅ C#은 편한 대신 느릴 수 있음하지만 .NET도 진짜 성능 필요한 순간엔 치트키 제공한다! GC 힙 말고 스택 메모리 사용 배열 복사 대신 슬라이스 참조 포인터로 낮은 레벨 직접 접근성능 민감한 작업 (파싱, 문자열 처리, 버퍼 연산)전부 이 챕터에서 다루는 기술이 들어간다!2️⃣ Span –..

C# 2025.05.04

C# 기초부터 고급까지 Chapter 2.10. 프로젝트 구조 패턴 – Layered vs Clean Architecture 소개

📘 Chapter 2.10: 프로젝트 구조 패턴 – Layered vs Clean Architecture 소개✅ 이 챕터에서 배울 것 왜 프로젝트 구조가 중요한가? Layered Architecture란? Clean Architecture란? 두 구조의 코드 예제 비교 (C# 콘솔앱 기준, 레이어 주석 포함) 언제 어떤 구조를 써야 하는가?1️⃣ 왜 프로젝트 구조가 중요한가?✅ 설계가 잘 안 되어 있으면… 클래스가 이리저리 흩어져 유지보수 지옥 기능이 섞이고 결합이 심해 테스트가 어려움 신입이 보면 "뭐가 뭔지 모르겠는데요…"✅ 설계가 잘 돼 있으면… 역할이 딱딱 나뉘고 각 계층 책임이 명확하고 테스트도, 교체도, 확장도 쉬워진다!2️⃣ Layered Architecture✅ 계층별..

C# 2025.05.04

C# 기초부터 고급까지 Chapter 2.9. 인터페이스 활용 – 다형성 실전 예제

📘 Chapter 2.9: 인터페이스 활용 – 다형성 실전 예제✅ 이 챕터에서 배울 것인터페이스란 무엇인가?다형성이 왜 필요한가?구체 클래스 vs 인터페이스 비교실무 시나리오 예제 (MessageSender, Discount 등)전략 패턴과 인터페이스DI와 인터페이스 궁합1️⃣ 인터페이스란?인터페이스란?"기능만 약속하는 설계도" – 실제 구현은 안 담고, 메서드 이름, 파라미터만 정의public interface IAnimal{ void MakeSound();}객체의 기능 규칙만 강제클래스가 여러 인터페이스도 구현 가능상속과 다르게 다중 구현 가능2️⃣ 왜 인터페이스가 필요한가?문제 상황public class EmailSender{ public void Send(string to, strin..

C# 2025.05.03

C# 기초부터 고급까지 Chapter 2.8.1: MSTest 완전정복 – 기본부터 실전 예제까지

📘 Chapter 2.8.1: MSTest 완전정복 – 기본부터 실전 예제까지✅ 이 챕터에서 확실하게 배울 것MSTest란 무엇인가?xUnit과 구조적으로 뭐가 다른가?MSTest 프로젝트 생성 및 설정[TestClass], [TestMethod]의 의미Assert 사용법데이터 기반 테스트 ([DataRow])MSTest에서 Mock 사용하기 (Moq 연동)1️⃣ MSTest란?Microsoft에서 공식 제공하는 단위 테스트 프레임워크✅ Visual Studio 통합성 최강✅ Attribute 기반 구조✅ .NET Framework 시절부터 쭉 사용됨✅ 안정성, 호환성 좋음✅ 실무에서 여전히 많이 씀2️⃣ MSTest vs xUnit 한눈 정리항목MSTestxUnit프로젝트 템플릿mstestxunit테..

C# 2025.05.02

C# 기초부터 고급까지 Chapter 2.8. 테스트 코드 작성 기초 – xUnit 완전정복 편

📘 Chapter 2.8: 테스트 코드 작성 기초 – xUnit 완전정복 편✅ 이 챕터에서 배울 것테스트 코드는 왜 필요한가?xUnit 설치 및 설정기본 테스트 메서드 작성법테스트 클래스 구성Assert 사용법데이터 기반 테스트 (Theory)의존성 있는 서비스 테스트하는 방법 (Mocking 개념 포함)1️⃣ 테스트 코드, 왜 필요한데?"코드가 돌아가는 게 아니라, 제대로 돌아가는지 확인하는 게 중요하다!"상황위험리팩터링 시 기존 기능 깨질 수 있음🚨 확인 불가팀원이 수정한 코드, 예상과 다르게 동작🚨 예외 발생외부 API 변화🚨 호출 실패✅ 이걸 예방하려면?→ 테스트 코드가 자동으로 돌면서 이상 여부를 알려줘야 한다!2️⃣ xUnit 시작하기✅ xUnit은 뭔데?.NET 진영에서 가장 널리 쓰..

C# 2025.05.02

C# 기초부터 고급까지 Chapter 2.7. 예외처리 전략 – Retry, Fallback, Polly 패턴

📘 Chapter 2.7: 예외처리 전략 – Retry, Fallback, Polly 패턴✅ 이 챕터에서 확실히 정리할 것기본 예외 처리 구조Retry 전략이란?Fallback 전략이란?Polly란 무엇인가?Polly 실전 사용법 (재시도, 대체 처리, 서킷 브레이커)실무에서 Polly 어떻게 쓰는지 패턴까지 정리1️⃣ 예외 처리 기본기✅ try-catch 기본 구조try{ // 실패할 수 있는 작업 CallExternalService();}catch (Exception ex){ Console.WriteLine($"에러 발생: {ex.Message}");}🧠 대부분 초보자들이 여기까지만 배운다.근데 실무는 이걸로는 택도 없다!!API가 한 번 실패했다고 그냥 끝내면 안 되지재시도 해봐..

C# 2025.05.01

C# 기초부터 고급까지 Chapter 2.6. Configuration 관리 – appsettings.json 구조와 환경별 분리 (feat. POCO 완전 이해 포함)

📘 Chapter 2.6: Configuration 관리 – appsettings.json 구조와 환경별 분리 (feat. POCO 완전 이해 포함)✅ 이번에 진짜 확실히 정리할 내용appsettings.json은 왜 필요한가?설정을 꺼내 쓰는 3가지 방법POCO 클래스란?환경별 설정 분리 정확한 구조user-secrets 비밀 정보 안전하게 숨기기실무 구성 Best Practice1️⃣ appsettings.json은 왜 필요하노?✅ 설정을 코드에 직접 때려박으면 어떻게 되노?var apiKey = "my-super-secret-api-key";👎 이거 배포하면 끝났다.운영용 키 노출수정할 때마다 재컴파일코드가 더러워짐환경에 따라 분기 처리 지옥✅ 그래서 나온 게 appsettings.json{ ..

C# 2025.05.01

C# 기초부터 고급까지 Chapter 2.5. 파일 입출력, 로그 남기기 – NLog, Serilog 예제

📘 Chapter 2.5: 파일 입출력, 로그 남기기 – NLog, Serilog 예제✅ 이 챕터에서 배울 것실무에서 로그 남기는 건 그냥 옵션이 아니라 생명줄이다.뭔 일 터졌을 때 로그가 없으면 원인 분석 자체가 불가능해진다!파일 입출력 기본스트림 처리 (StreamReader/Writer)실무 로깅 라이브러리: NLog와 Serilog각 라이브러리 비교, 설정법, 사용 예제실전 상황별 로그 패턴1️⃣ 파일 입출력 (File I/O) 기본📦 파일 쓰기string path = "log.txt";File.WriteAllText(path, "로그 한 줄!");📦 파일에 줄 단위로 추가 쓰기File.AppendAllText(path, "추가 로그\n");📖 파일 읽기string content = Fil..

C# 2025.04.30