Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#

  1. Newtonsoft.Json으로 XML과 JSON 상호 변환하기: SerializeXmlNode와 DeserializeXmlNode 활용법

    C# 개발에서 XML과 JSON은 가장 널리 사용되는 데이터 형식입니다. 다행히 Json.NET(Newtonsoft.Json) 라이브러리는 XmlNodeConverter를 통해 두 형식 간의 변환을 손쉽게 지원합니다.변환 과정에서 요소(Element), 속성(Attribute), 텍스트, 주석(Comment), 문자 데이터(CDATA), 처리 명령(Processing Instruction), 네임스페이스, 그리고 XML 선언부까지 모두 그대로 보존되므로, 기존 문서 구조를 잃지 않고 안전하게 변환할 수 있다는 점이 큰 장점입니다.1

  2. C# 종속성 주입(DI) 완벽 가이드: 4가지 구현 방법과 장단점

    소프트웨어 설계에서 종속성 주입(Dependency Injection, DI)은 서로 강하게 결합된(종속적인) 객체를 느슨하게 분리된(독립적인) 구조로 전환하고, 필요한 의존 객체를 외부에서 주입하는 기법을 말합니다. DI를 적용하면 클래스 간 결합도가 낮아져 유연하고 테스트하기 쉬운 애플리케이션을 만들 수 있습니다.종속성 주입의 4가지 유형C#에서 활용할 수 있는 대표적인 DI 방식은 다음과 같습니다.생성자 주입(Constructor Injection)세터 주입(Setter Injection)인터페이스 기반 주입(Interface

  3. C#에서 디렉터리로 파일을 복사하는 방법 (File.Copy 활용 가이드)

    C#에서 파일을 복사하려면 File.Copy 메서드를 사용합니다. 이 메서드는 System.IO 네임스페이스에 포함되어 있으며, 두 가지 오버로드가 제공됩니다.File.Copy의 두 가지 오버로드Copy(String, String) — 기존 파일을 새 파일로 복사합니다. 같은 이름의 파일이 이미 존재할 경우 덮어쓰기가 허용되지 않으며, 예외가 발생합니다.Copy(String, String, Boolean) — 기존 파일을 새 파일로 복사합니다. 세 번째 매개변수(Boolean)에 true를 전달하면 같은 이름의 파일을 덮어쓸 수 있

  4. C# FluentValidation 완벽 가이드: 유창한 유효성 검사의 개념과 사용법

    FluentValidation은 .NET 애플리케이션에서 강력한 형식(Strongly-Typed) 기반의 유효성 검사 규칙을 손쉽게 작성할 수 있도록 도와주는 오픈소스 라이브러리입니다. 유창한 인터페이스(Fluent Interface) 스타일과 람다 식(Lambda Expression)을 활용해 규칙을 선언형으로 구성할 수 있으며, 이를 통해 도메인 코드를 깔끔하게 유지하고 응집도를 높일 수 있습니다. 또한 여기저기 흩어지기 쉬운 유효성 검사 로직을 한 곳에서 체계적으로 관리할 수 있다는 점이 큰 장점입니다.FluentValidat

  5. C# FluentValidation으로 생년월일(DateOfBirth) 유효성 검사하기 – 현재 연도 이후 날짜 입력 차단 방법

    C# 개발에서 FluentValidation은 객체의 속성 값을 손쉽게 검증할 수 있게 해주는 강력한 라이브러리입니다. 특히 생년월일(DateOfBirth)처럼 미래 날짜가 입력되면 안 되는 필드를 검증할 때 매우 유용합니다. 이 글에서는 현재 연도를 초과하는 날짜가 입력될 경우 유효성 검사에 실패하도록 처리하는 방법을 살펴보겠습니다.RuleFor 메서드로 검증 규칙 정의하기특정 속성에 대한 유효성 검사 규칙을 지정하려면 RuleFor 메서드를 호출하고, 검증하고자 하는 속성을 가리키는 람다 식(lambda expression)을

  6. Fluent Validation으로 C# 문자열 속성의 최소·최대 길이(MinLength/MaxLength) 유효성 검사하는 방법

    MaxLength 유효성 검사기(MaximumLength)Fluent Validation의 MaximumLength 규칙은 특정 문자열 속성의 길이가 지정된 값보다 길어지지 않도록 보장합니다. 이 규칙은 오직 문자열(string) 타입 속성에만 적용할 수 있습니다.오류 메시지 작성 시 활용할 수 있는 형식 인자(format args)는 다음과 같습니다.{PropertyName} : 유효성 검사를 수행 중인 속성의 이름{MaxLength} : 허용되는 최대 길이{TotalLength} : 실제 입력된 문자 수{PropertyValue

  7. C#에서 IEnumerable을 List로 변환하고 List를 다시 IEnumerable로 변환하는 방법

    IEnumerable은 GetEnumerator() 메서드 하나만을 정의하는 인터페이스로, 이 메서드는 IEnumerator 인터페이스를 반환합니다. IEnumerable은 열거(순회)할 수 있는 모든 컬렉션의 기본이 되는 인터페이스입니다.IEnumerable은 컬렉션에 대한 읽기 전용 접근을 제공하며, 해당 인터페이스를 구현한 컬렉션은 foreach 문으로 손쉽게 순회할 수 있습니다.반면 List<T> 클래스는 인덱스를 통해 요소에 접근할 수 있는 객체 목록을 나타내며, System.Collections.Generic

  8. C#에서 특정 경로의 모든 디렉터리와 하위 디렉터리를 가져오는 방법

    C#에서는 Directory.GetDirectories 메서드를 사용하여 지정된 경로 내의 디렉터리 목록을 손쉽게 조회할 수 있습니다. 이 메서드는 지정된 디렉터리에서 검색 패턴과 일치하는 하위 디렉터리의 이름(전체 경로 포함)을 반환하며, 옵션 설정에 따라 하위 디렉터리까지 재귀적으로 탐색할 수도 있습니다.검색 패턴에서 별표(*)는 해당 위치에 0개 이상의 임의 문자가 올 수 있음을 의미합니다. 또한 SearchOption 열거형으로 검색 범위를 지정할 수 있는데, SearchOption.TopDirectoryOnly는 최상위 디

  9. C# async void 메서드에서 발생한 예외를 잡는 방법

    동기식(synchronous) C# 코드에서는 예외가 호출 스택을 따라 위쪽으로 전파되다가, 해당 예외를 처리할 수 있는 적절한 catch 블록을 만나면 잡히게 됩니다. 하지만 비동기(asynchronous) 메서드에서의 예외 처리 방식은 이보다 훨씬 복잡합니다.비동기 메서드의 반환 타입과 예외 전파C#의 비동기 메서드는 세 가지 반환 타입을 가질 수 있습니다.voidTaskTask<T>반환 타입이 Task 또는 Task<T>인 비동기 메서드에서 예외가 발생하면, 예외 객체는 AggregateException

  10. C#에서 파일 크기를 사람이 읽기 쉬운 형식(KB, MB, GB)으로 변환하는 방법

    프로그램에서 파일 크기를 다룰 때 바이트 단위의 숫자만 그대로 출력하면 사용자가 실제 크기를 직관적으로 파악하기 어렵습니다. 1048576이라는 숫자보다 1 MB라고 표시하는 것이 훨씬 이해하기 쉽습니다. 이 글에서는 C#을 사용해 파일 크기를 KB, MB, GB처럼 사람이 읽기 쉬운 형태(바이트 약어)로 변환하고 표시하는 방법을 알아봅니다. 필요한 기본 API 살펴보기 1. 파일 목록 가져오기 — Directory.GetFiles C#은 디렉터리와 파일을 다루는 강력한 API를 기본적으로 제공합니다. Directory.GetF

  11. C# 연결 풀링(Connection Pooling) 완벽 정리: using 문으로 리소스 관리와 성능 최적화하기

    C# using 지시문의 기본 용도 C#에서 using 지시문(using directive)은 네임스페이스(namespace)를 가져오거나, 네임스페이스 및 타입에 별칭(alias)을 부여할 때 사용합니다. 일반적으로 소스 파일의 맨 위, 모든 선언부보다 먼저 위치해야 합니다. using System; using System.IO; using WinForms = global::System.Windows.Forms; using WinButton = WinForms::Button; using 문이 보장하는 Dispose() 자동 호출

  12. C# 널 객체 패턴(Null Object Pattern) 구현 방법 완벽 가이드

    널 객체 패턴(Null Object Pattern)은 가능한 한 null 검사를 피하면서 깔끔하고 안전한 코드를 작성할 수 있도록 도와주는 디자인 패턴입니다. 이 패턴을 활용하면 호출부(caller)는 자신이 다루는 객체가 실제 객체인지, 아니면 아무 동작도 수행하지 않는 널 객체인지 일일이 신경 쓸 필요가 없습니다.다만 모든 상황에서 널 객체 패턴을 적용할 수 있는 것은 아닙니다. 경우에 따라서는 null 참조를 그대로 반환하고 null 검사를 수행하는 편이 더 적절할 수도 있습니다. 따라서 이 패턴은 null 처리 로직이 반복적

  13. C# IDisposable 디자인 패턴(Dispose 패턴) 구현 방법 총정리

    비관리형(unmanaged) 개체를 해제(dispose)해야 하는 상황이라면 IDisposable 디자인 패턴(Dispose 패턴)을 사용하는 것이 바람직합니다. 이 패턴을 구현하려면 비관리형 개체를 직접 혹은 간접적으로 다루는 클래스가 IDisposable 인터페이스를 구현하고, 해당 인터페이스에 선언된 Dispose 메서드를 작성해야 합니다. 대부분의 경우 개발자가 비관리형 개체를 직접 다루지는 않으며, 대신 비관리형 개체를 내부적으로 처리하는 관리형(managed) 클래스를 사용하게 됩니다. 예를 들어 파일 핸들러(File

  14. C#으로 디렉터리의 모든 파일·하위 폴더 파일 및 크기까지 한 번에 가져오는 방법

    C#에서는 Directory.GetFiles 메서드를 사용하면 특정 디렉터리에 있는 파일들을 손쉽게 조회할 수 있습니다.Directory.GetFiles는 지정한 검색 패턴과 일치하는 모든 파일의 이름(전체 경로 포함)을 반환하며, 필요에 따라 하위 디렉터리까지 함께 검색할 수 있습니다.검색 패턴에서 별표(*)는 해당 위치에 0개 이상의 임의 문자가 올 수 있음을 의미합니다. 예를 들어 *.*는 확장자를 가진 모든 파일을 뜻합니다.검색 범위는 SearchOption 열거형으로 지정합니다.SearchOption.TopDirectory

  15. C#에서 싱글톤 클래스를 sealed로 선언해야 하는 이유

    C#에서 sealed 키워드는 해당 클래스를 더 이상 상속할 수 없다는 의미입니다. 반면 생성자를 private으로 선언하면 클래스 외부에서 인스턴스를 생성할 수 없게 됩니다. 그런데 여기서 주의할 점이 있습니다. private 생성자를 가진 기본 클래스라 하더라도 상속 자체는 여전히 가능합니다. 파생 클래스에서 public 생성자를 새로 정의하면, 그 과정에서 기본 클래스의 생성자가 호출되어 결국 기본 클래스의 인스턴스까지 만들어지게 됩니다. 핵심은 두 가지입니다. 첫째, 생성자는 상속되지 않습니다. 즉, 기본 클래스의 생성자가

  16. 리스코프 치환 원칙(LSP)이란 무엇이며, C#에서 구현하는 방법

    리스코프 치환 원칙(Liskov Substitution Principle)의 핵심은 파생 타입(자식 클래스)은 기반 타입(부모 클래스)을 완전히 대체할 수 있어야 한다는 것입니다.정의리스코프 치환 원칙(LSP)은 SOLID 객체 지향 설계 원칙 중 하나로, 자식 클래스를 부모 클래스인 것처럼 자유롭게 사용할 수 있어야 한다는 개념입니다.쉽게 말해, 모든 파생 클래스는 부모 클래스가 제공하는 기능을 그대로 유지해야 하며, 부모의 동작을 임의로 대체하거나 깨뜨려서는 안 됩니다. 이 원칙이 지켜지지 않으면 부모 타입을 사용하는 코드가 자

  17. 파사드(Facade) 패턴이란? C#에서 구현하는 방법 총정리

    파사드(Facade) 패턴이란?파사드 패턴은 복잡한 내부 구조 위에 얹히는 간단하고 통합된 인터페이스를 제공하는 디자인 패턴입니다. 클라이언트는 복잡한 하위 시스템의 세부 동작을 몰라도 되며, 파사드가 노출하는 단순한 메서드만 호출하면 됩니다.패턴의 구성 요소하위 시스템(Subsystems): 실제 기능을 구현하는 클래스나 객체들입니다. 파사드는 이러한 하위 시스템을 감싸거나(wrap) 덮어(cover) 인터페이스를 단순화할 수 있습니다.파사드(Facade): 하위 시스템 위에 위치한 추상화 계층으로, 적절한 작업을 어느 하위 시스

  18. C# 인터페이스 분리 원칙(ISP)이란? 개념부터 구현 예제까지

    클라이언트는 자신이 사용하지 않는 인터페이스에 의존하도록 강요받아서는 안 된다.인터페이스 분리 원칙(Interface Segregation Principle, ISP)은 SOLID 설계 원칙 중 하나로, 클라이언트가 실제로 사용하지 않는 메서드나 속성까지 구현하도록 강제하지 말아야 한다는 원칙입니다.쉽게 말해, 여러 기능이 뒤섞인 하나의 거대한 뚱뚱한(fat) 인터페이스를 만들기보다는, 메서드의 성격별로 작은 인터페이스 여러 개로 나누고, 각 인터페이스가 하나의 하위 모듈만 담당하도록 설계하는 것이 바람직하다는 의미입니다.인터페이스

  19. 프록시(Proxy) 디자인 패턴이란? 개념부터 C# 구현 방법까지

    프록시(Proxy) 패턴은 실제 객체에 대한 접근을 제어하기 위해 대리자(surrogate) 또는 플레이스홀더 역할을 하는 객체를 제공하는 구조적 디자인 패턴입니다. 클라이언트는 프록시 객체를 원본 객체와 동일한 방식으로 사용할 수 있기 때문에, 내부 구현을 몰라도 투명하게 객체를 다룰 수 있습니다.패턴의 구성 요소(Participants)1. Subject (주체)RealSubject와 Proxy가 공통으로 따르는 인터페이스를 정의합니다. 이 덕분에 RealSubject가 필요한 모든 위치에서 Proxy를 자유롭게 대체하여 사용할

  20. 종속성 반전 원칙(DIP)이란? C#에서 구현하는 방법 완벽 가이드

    종속성 반전 원칙(Dependency Inversion Principle, DIP)은 SOLID 설계 원칙 중 하나로, 상위 수준 모듈과 하위 수준 모듈 간의 결합도를 낮추는 데 초점을 맞춘 객체 지향 설계 원칙입니다. 종속성 반전 원칙의 핵심 개념 종속성 반전 원칙은 다음 두 가지 규칙으로 요약할 수 있습니다. 상위 수준 모듈(고수준 모듈)은 하위 수준 모듈(저수준 모듈)에 의존해서는 안 됩니다. 둘 다 추상화에 의존해야 합니다. 추상화는 세부 사항에 의존해서는 안 됩니다. 오히려 세부 사항이 추상화에 의존해야 합니다. 쉽게

Total 2668 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:130/134  20-컴퓨터/Page Goto:1 124 125 126 127 128 129 130 131 132 133 134