본문 바로가기

C#

C# 애셈블리 버전 관리와 strong naming C#에서 애셈블리 버전 관리와 strong naming은 안정적인 배포와 참조를 위해 꼭 알아야 할 개념입니다. 이번 글에서는 애셈블리 버전 관리 방법과 strong naming의 역할을 간단히 정리합니다.1. 애셈블리 버전 구성애셈블리 버전은 보통 Major.Minor.Build.Revision 4파트로 구성됩니다. 이 정보는 어셈블리 오른쪽 속성창 또는 AssemblyInfo.cs 파일에서 관리합니다.[assembly: AssemblyVersion("1.0.0.0")] // 런타임버전[assembly: AssemblyFileVersion("1.0.0.0")] // 배포파일 버전AssemblyVersion은 참조 호환성을 결정하고, AssemblyFileVersion은 파일 버전 관리를 위한 정보입니.. 더보기
C# 메타데이터 읽기와 리플렉션(Reflection) C#에서 메타데이터란 어셈블리, 타입, 멤버에 대한 정보를 말합니다. 리플렉션은 이 메타데이터를 실행 시간에 읽어 코드 구조를 동적으로 파악하고 조작할 수 있게 합니다.1. 왜 리플렉션을 사용할까?리플렉션을 사용하면 컴파일 시 알 수 없는 타입 정보나 속성을 실행 중에 조사하고, 인스턴스를 생성하거나 메서드를 호출할 수 있어 유연한 프로그래밍이 가능합니다.2. 기본적인 리플렉션 예제using System;using System.Reflection;public class Person{ public string Name { get; set; } public int Age { get; set; } public void SayHello() { Console.WriteLine($.. 더보기
C# 애플리케이션 설정(Configuration) 관리 C# 애플리케이션에서 설정을 효율적으로 관리하는 방법을 소개합니다. 설정 관리는 환경별 설정 분리와 유지보수를 쉽게 만들어 줍니다.1. appsettings.json 활용최근 .NET Core와 .NET 5 이상에서는 appsettings.json 파일을 기본 설정 파일로 사용합니다.{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning" } }, "AllowedHosts": "*", "MySetting": "Value"}2. 설정 읽기 방법ConfigurationBuilder를 통해 설정을 읽을 수 있습니다.using Microsoft.Extensions.Configuration;var.. 더보기
C# 정적 생성자(Static Constructor) 활용 정적 생성자는 클래스가 처음 사용될 때 단 한 번 실행되는 특별한 생성자입니다. 주로 정적 멤버를 초기화할 때 사용합니다.1. 정적 생성자 기본 문법class MyClass{ static int count; // 정적 생성자 static MyClass() { count = 0; Console.WriteLine("정적 생성자 호출"); } public MyClass() { count++; Console.WriteLine($"인스턴스 생성, count = {count}"); }}2. 활용 예시정적 생성자를 통해 복잡한 정적 멤버 초기화나 리소스 할당을 안전하게 수행할 수 있습니다.class Config{ pub.. 더보기
C# 분할 클래스(Partial Class)와 메서드 이해하기 C#의 분할 클래스는 하나의 클래스를 여러 파일이나 여러 부분으로 나누어 작성할 수 있게 해줍니다. 이는 대규모 프로젝트에서 코드 관리와 협업을 용이하게 합니다.1. 분할 클래스란?분할 클래스는 class 키워드 앞에 partial 키워드를 붙여 선언합니다. 컴파일 시 이들은 하나의 클래스로 병합됩니다.// File1.cspublic partial class MyClass{ public void MethodA() { Console.WriteLine("Method A"); }}// File2.cspublic partial class MyClass{ public void MethodB() { Console.WriteLine("Method B"); }}.. 더보기
C# 암호화(Cryptography) 기초 - AES, RSA 암호화는 데이터 보안에 필수적입니다. C#에서는 AES와 RSA 같은 대표적인 암호화 알고리즘을 쉽게 사용할 수 있습니다. 이번 글에서는 AES 대칭키 암호화와 RSA 비대칭키 암호화의 기초 사용법을 간단히 소개합니다.1. AES 대칭키 암호화AES는 같은 키로 데이터를 암호화하고 복호화하는 대칭키 알고리즘입니다. 빠르고 안전하여 주로 대용량 데이터 암호화에 사용됩니다.using System.Security.Cryptography;using System.Text;// AES 암호화 예제public static byte[] AESEncrypt(string plainText, byte[] key, byte[] iv){ using (Aes aes = Aes.Create()) { aes... 더보기
C# 정규 표현식(Regex) 고급 사용법 C#에서 정규 표현식(Regex)은 강력한 텍스트 처리 도구입니다. 이번 글에서는 고급 기능을 통해 더 효율적이고 복잡한 패턴 매칭 방법을 다룹니다.1. 정규식 캡처 그룹과 이름 붙이기캡처 그룹은 부분 문자열을 추출할 때 유용하며, 이름 붙인 그룹은 가독성과 유지보수성을 높입니다.var pattern = @"(?\d{4})-(?\d{2})-(?\d{2})";var input = "2024-06-15";var match = Regex.Match(input, pattern);if (match.Success){ var year = match.Groups["year"].Value; var month = match.Groups["month"].Value; var day = match.Groups[.. 더보기
C# BinaryFormatter 대체 Serialization 방법 BinaryFormatter는 보안 이슈로 더 이상 권장되지 않습니다. 안전하고 효율적인 대체 직렬화 방법을 소개합니다.1. System.Text.Json 사용하기최신 .NET 표준 라이브러리로 Json 직렬화를 할 수 있습니다.using System.Text.Json;var obj = new Person { Name = "홍길동", Age = 30 };// 직렬화string json = JsonSerializer.Serialize(obj);// 역직렬화var person = JsonSerializer.Deserialize(json);public class Person{ public string Name { get; set; } public int Age { get; set; }}2. XmlS.. 더보기