분류 전체보기338 C#의 public sealed record 이해하기 ## C#의 public sealed record 이해하기C++에서는 데이터 전달용 객체(DTO)나 VO(Value Object)를 만들 때 struct나 가벼운 class를 정의하고, 대입 연산자나 비교 연산자(==)를 일일이 오버로딩해야 했습니다. C#의 record는 이 번거로운 과정을 컴파일러가 자동으로 처리해 주는 '불변(Immutable) 데이터 모델' 정의 방식입니다.### 1. 왜 C++의 헤더나 함수 선언처럼 보였을까? (기본 생성자 Syntax)C#에서는 레코드를 선언할 때 다음과 같이 한 줄로 끝내는 구문(Primary Constructor)을 자주 사용합니다.C# // 이 한 줄이 클래스 선언, 멤버 변수 생성, 생성자 구현을 모두 포함합니다.public sealed record D.. 2026. 6. 17. delegate Func 란? MFC 개발자분들이 매일 사용하시던 '함수 포인터(Function Pointer)' 개념이 C#에서 가장 현대적이고 안전하게 진화한 형태라고 보시면 됩니다.이 문법이 의미하는 바를 각 키워드와 MFC 개념을 매핑하여 명쾌하게 풀어드리겠습니다.## 1. MFC 함수 포인터 vs C# Func 대리자MFC 방식 (typedef): 특정 함수를 변수처럼 넘기려면 리턴 타입과 파라미터를 명시한 typedef를 매번 선언해야 했습니다. 32비트/64비트 환경이나 호출 규약(__stdcall, __cdecl)에 따라 컴파일 에러가 나기도 쉬웠죠.C++ // MFC 스타일: 매번 타입을 정의해야 함typedef int (*MY_CALC_FUNC)(double); .NET 8 방식 (Func): 프레임워크가 자주 쓰는.. 2026. 6. 16. ResiliencePipeline 클래스란 무엇인지? ResiliencePipeline은 .NET 8에서 새롭게 도입된 고성능 탄력성 및 재시도(Retry) 패턴 제어 프레임워크입니다.기존 .NET 생태계에서는 외부 장비 통신이나 네트워크 예외 처리를 위해 Polly라는 유명한 오픈소스 라이브러리를 개별적으로 가져다 썼습니다. 하지만 .NET 8에 이르러 Microsoft와 Polly 팀이 협력하여, 런타임 자체에 표준화된 고성능 엔진으로 내장시킨 것이 바로 이 ResiliencePipeline입니다.통신 프로젝트처럼 "장치와 무선(BLE/Wi-Fi)으로 통신할 때 발생하는 패킷 유실, 일시적 타임아웃, 연결 끊김" 상황을 코드를 지저분하게 짜지 않고 우아하게 복구할 수 있도록 도와주는 핵심 기능입니다.## 1. 왜 필요할까요? (MFC/레거시 방식과의 비.. 2026. 6. 16. C# 숫자 리터럴 중간에 들어간 언더바(_) 사용 숫자 리터럴 중간에 들어간 언더바(_)는 C# 7.0부터 도입된 '디지트 구분 기호(Digit Separator)'라는 문법입니다.MFC(C++)나 레거시 WinForm 환경에서 오랫동안 개발하시던 분들에게는 다소 낯설 수 있지만, 현대 C# 프로그래밍에서는 가독성을 높이기 위해 공식적으로 지원하고 권장하는 기능입니다. 이 기능의 작동 원리와 유용한 활용 팁을 정리해 드릴게요.## 1. 작동 원리: 컴파일러는 _를 무시합니다컴파일러는 코드를 빌드할 때 숫자 사이에 있는 언더바(_)를 단순한 공백처럼 취급하여 완전히 무시합니다.즉, 개발자가 소스코드를 읽을 때는 60_000으로 보이지만, 빌드가 완료되어 실행 파일(IL 코드)이 될 때는 컴파일러가 알아서 60000이라는 순수한 int 값으로 바꾸어 처리합.. 2026. 6. 16. IServiceCollection를 확장하는 메서드 ## 1. IServiceCollection이란 무엇인가요?IServiceCollection은 .NET 8 프레임워크가 제공하는 '애플리케이션 부품(서비스) 등록 장부'입니다.디자인 패턴에서는 이를 IoC (Inversion of Control, 제어의 역전) 컨테이너 또는 DI (Dependency Injection, 의존성 주입) 컨테이너라고 부릅니다.레거시 방식 (C++/Qt/WinForm 스타일): 통신 클래스나 암호화 클래스가 필요하면 개발자가 코드 곳곳에서 new BLEService()나 싱글톤 포인터 BLEService::GetInstance()를 직접 호출해 객체를 만들었습니다. 이는 모듈 간 결합도를 극도로 높여 장비 시뮬레이터를 붙이거나 모바일로 이식할 때 코드를 다 갈아엎어야 하는 주.. 2026. 6. 16. MFC 개발자 대상 .NET 8 기반 IPC 샘플 코드 기반 교육 두개의 윈도우 SW가 IPC를 해서 한쪽 SW에서 계산식을 넣고 다른 SW에서 계산을 하고 그 결과를 계산식을 넣은 SW에 전달해서 표시하는 프로그램을 제작해서 샘플 코드 기반.MFC에서 주로 사용하던 WM_COPYDATA(SendMessage 기반), Named Pipe, Shared Memory 등의 개념은 .NET 8에서도 그대로 사용할 수 있지만, .NET 8 스타일의 가장 현대적이고 강력한 IPC 방식은 gRPC(Google Remote Procedure Call) 또는 Named Pipe(표준 스트림 기반)를 사용하는 것입니다.여기서는 MFC 개발자분들이 개념적으로 가장 쉽게 매핑할 수 있으면서도, .NET 8의 현대적 특징(async/await, 의존성 주입, 인터럽트 없는 비동기 스트림)을.. 2026. 6. 16. .NET 8 개발 전환을 위한 핵심 개발자 패러다임 시프트 교육 로드맵 WPF, Windows Forms(WinForm), 그리고 MFC까지 경험하신 개발자분들이라면 이미 Windows 환경의 이벤트 기반 프로그래밍과 메시지 루프, 리소스 관리(GDI/HWND 등)에 대한 깊은 이해를 갖추고 계실 것입니다.이러한 탄탄한 기반 위에 .NET 8이라는 현대적인 프레임워크를 얹으면, 기존에 고통받던 비동기 처리, 의존성 관리, 크로스 플랫폼 확장 등이 놀라울 정도로 깔끔해집니다.기존 레거시 기술 스택과의 매핑을 중심으로, .NET 8 개발 전환을 위한 핵심 개발자 패러다임 시프트 교육 로드맵을 정리해 드리겠습니다.## 1. 기술 스택별 개념 매핑 (과거 vs 현재)새로운 용어에 낯설어하실 필요 없습니다. 이미 알고 계신 개념들이 현대적으로 진화한 것입니다.개념MFC / WinFo.. 2026. 6. 16. .NET 8의 HostApplicationBuilder? .NET 8의 HostApplicationBuilder는 기존 WPF 개발자분들이 주로 사용하던 방식(과거 App.xaml.cs에서 수동으로 객체를 생성하거나 별도의 IoC 컨테이너를 붙이던 방식)을 완전히 뒤바꾼, 현대 .NET의 핵심 프레임워크 기능입니다.이 개념을 기존 C# WPF 경험과 연결하여 알기 쉽게 설명해 드리겠습니다.## 1. HostApplicationBuilder란 무엇인가요?HostApplicationBuilder는 애플리케이션이 실행되는 데 필요한 '인프라(환경)를 한곳에서 간편하게 빌드하고 관리해 주는 도구'입니다.과거 .NET Core 시절에는 웹용(WebHostBuilder)과 일반 콘솔/서비스용(HostBuilder)이 나누어져 있어 코드가 다소 복잡했습니다. .NET 7/.. 2026. 6. 16. Windows 탐색기 상세 정보(Details) 표시용 속성 핸들러 DLL 개발 가이드 - 특정 파일 포맷의 **헤더 일부 내용**을 Windows 탐색기의 **상세 정보 창 / 열(Details) / 풍선 도움말(Infotip) / 검색**에 노출하는 DLL을 제작하기 위한 자료.- 출처: Microsoft Learn (Win32 Property System, Shell Extensions) 공식 문서. 조사일: 2026-06-11.---## 1. 결론 — 무슨 기술인가Windows Vista 이후 Windows에는 **확장 가능한 속성 시스템(Property System)** 이 내장되어 있다. 탐색기 상세 정보 창·열, 풍선 도움말(infotip), Windows Search 인덱서가 모두 이 시스템을 통해 파일 메타데이터를 읽는다.내가 소유한 **고유 파일 포맷**의 헤더 내용을 탐.. 2026. 6. 11. 이전 1 2 3 4 ··· 38 다음