반응형

분류 전체보기 125

[C#] Extension 메소드 사용하기

C# 프로그래밍에서 Extension 메소드(확장 메소드)는 기존의 타입에 새로운 메소드를 추가할 수 있게 해주는 강력한 기능입니다. 이 기능은 특히 기존 라이브러리나 프레임워크를 수정하지 않고도 해당 타입의 기능을 확장하고 싶을 때 유용합니다. 1. Extension 메소드란 무엇인가?Extension 메소드는 정적 메소드로 선언되지만, 특정 타입의 인스턴스 메소드처럼 사용될 수 있습니다. 이 메소드는 this 키워드를 사용해 첫 번째 파라미터에 기존 타입을 명시함으로써 해당 타입의 인스턴스에 대해 호출할 수 있게 됩니다.2. Extension 메소드 구현 방법Extension 메소드를 구현하려면 다음과 같은 단계를 따르세요:정적 클래스 생성: Extension 메소드는 정적 클래스 내부에 정의되어야 ..

프로그래밍/C# 2024.05.08

[WPF] DataGrid 행 더블 클릭 시 Command 실행하기

WPF에서 MVVM 패턴을 사용하는 경우, DataGrid의 행을 더블 클릭할 때 특정 Command를 실행하고자 할 수 있습니다. 이 작업을 수행하기 위해서는 Interaction.Behaviors를 활용하는 것이 일반적입니다. 오늘은 DataGrid 행 더블 클릭에 Command를 연결하고 CommandParameter로 선택된 행의 아이템을 전달하는 방법을 살펴보겠습니다. 1단계: Behavior 클래스 생성 먼저, 행 더블 클릭 시 실행할 Behavior 클래스를 생성해야 합니다. 이 클래스는 System.Windows.Interactivity.Behavior를 상속받아야 합니다. 그리고 Command와 CommandParameter를 DependencyProperty로 선언하여, XAML에서 B..

프로그래밍/WPF 2023.11.03

[WPF] HelixToolkit.Wpf.SharpDX 사용하여 3D 공간에서 마우스 드래그로 선택 영역 그리기

3D 모델링 및 시각화 툴을 개발하다 보면 사용자가 마우스로 드래그하여 특정 영역을 선택하는 기능을 구현할 필요가 종종 있습니다. 이번 글에서는 WPF와 HelixToolkit.Wpf.SharpDX를 사용하여 3D 공간에서 마우스 드래그로 선택 영역을 그리는 방법에 대해 알아보겠습니다. 개요 사용자가 마우스 왼쪽 버튼을 클릭하고 드래그하면, 그림자 박스 형태로 선택 영역을 화면에 표시합니다. 이 기능은 3D 모델링 툴에서 객체를 선택하거나, 특정 영역에 대한 작업을 수행할 때 유용하게 사용됩니다. 준비 먼저, WPF 프로젝트를 생성하고, NuGet 패키지 관리자를 통해 HelixToolkit.Wpf.SharpDX를 설치합니다. 코드 구현 디자인 필드 정의 private Vector3 startDragPo..

프로그래밍/WPF 2023.10.30

[PL/SQL] Cursor-based FOR LOOP 활용하기

데이터베이스 작업을 할 때, 종종 특정 쿼리 결과를 순회하며 작업을 수행해야 합니다. Oracle PL/SQL에서는 Cursor-based FOR LOOP라는 강력한 구조를 제공하여 이런 작업을 단순화합니다. 이 글에서는 해당 구조의 기본 문법과 함께 활용 예시를 알아봅니다. Cursor-based FOR LOOP의 기본 문법 Cursor-based FOR LOOP는 Oracle PL/SQL에서 제공하는 반복 구조 중 하나로, SELECT 문의 결과를 순회할 때 주로 사용됩니다. FOR cursor_variable IN (SELECT 문) LOOP -- 반복할 로직 END LOOP; 이 구조의 장점은 다음과 같습니다: 간결성: 명시적인 커서 선언, OPEN, FETCH, CLOSE 등의 작업 없이 직관적..

[C#] SkipWhile & TakeWhile

C# LINQ: SkipWhile과 TakeWhile 메서드 깊게 알아보기 안녕하세요! 오늘은 C#의 LINQ 메서드 중 SkipWhile과 TakeWhile에 대해 자세히 알아볼 것입니다. 이 두 메서드는 데이터 컬렉션을 효과적으로 쿼리하는 데 아주 유용합니다. LINQ란? LINQ (Language Integrated Query)는 데이터 컬렉션에 쿼리를 실행하기 위한 표준화된 방법을 제공하는 C#의 특징 중 하나입니다. LINQ는 다양한 데이터 소스 (예: 배열, 리스트, 데이터베이스)에 작동하도록 설계되었습니다. SkipWhile 메서드 SkipWhile은 주어진 조건이 참인 동안의 컬렉션 요소들을 건너뛰고, 그 이후의 요소들을 반환합니다. List numbers = new List { 1, 2,..

프로그래밍/C# 2023.08.18

[C#] 디자인 패턴 - Builder Pattern

Builder Pattern은 복잡한 객체의 생성을 단순화하기 위한 디자인 패턴입니다. 객체의 생성과 표현을 분리함으로써 동일한 생성 절차에서 서로 다른 표현 결과를 얻을 수 있습니다. 기본 구조 Builder Pattern은 주로 다음 구성 요소로 이루어져 있습니다: Builder: 생성될 객체의 각 부분의 생성과 조립 방법을 정의하는 추상 인터페이스입니다. ConcreteBuilder: Builder의 인터페이스를 구현하는 클래스로, 실제 제품의 구체적인 표현을 정의합니다. Director: Builder 인터페이스의 사용 방법을 정의합니다. Product: 생성될 복잡한 객체를 나타냅니다. 언제 사용해야 하는가? 복잡한 객체의 생성 절차와 그 표현을 분리하고 싶을 때 동일한 생성 절차에서 서로 다른..

프로그래밍/C# 2023.08.15

[C#] 디자인패턴 - Abstract Factory Pattern

Abstract Factory Pattern은 연관된 객체들의 그룹 또는 의존 객체들의 집합을 생성하기 위한 인터페이스를 제공합니다. 이는 상호 교환 가능한 객체 집합을 생성하는 것을 목표로 하며, 객체 생성의 구체적인 클래스를 숨긴 채 각 집합의 공통된 테마나 속성에 따라 객체를 생성합니다. 기본 구조 Abstract Factory Pattern은 주로 다음 구성 요소로 이루어져 있습니다 AbstractFactory: 모든 구체 팩토리의 공통 인터페이스입니다. ConcreteFactory: 실제 객체 집합을 생성하는 구체적인 팩토리입니다. AbstractProduct: 생성되는 제품의 공통 인터페이스입니다. ConcreteProduct: 실제 생성되는 제품입니다. 언제 사용해야 하는가? 시스템이 제품 ..

프로그래밍/C# 2023.08.15

[C#] 디자인패턴 - Factory Method Pattern

Factory Method Pattern은 객체를 생성하는 디자인 패턴 중 하나로, 객체 생성 로직을 하위 클래스로 위임함으로써 인스턴스화를 수행하는 클래스와 실제 생성되는 객체 클래스를 분리합니다. 이 패턴은 객체 생성에 관한 로직을 캡슐화하고, 새로운 타입의 객체 추가 시 코드의 변경을 최소화하는 데 도움을 줍니다. 기본 구조 Factory Method Pattern은 주로 다음의 두 가지 구성 요소로 이루어져 있습니다 Creator: 객체를 생성하는 공통 인터페이스 또는 추상 클래스입니다. ConcreteCreator: 실제 객체를 생성하는 클래스입니다. 언제 사용해야 하는가? 객체 생성과 클래스 구현을 분리하고 싶을 때 시스템에 새로운 객체 타입을 추가할 때 코드 변경을 최소화하고 싶을 때 초기화..

프로그래밍/C# 2023.08.15

[C#] 디자인패턴 - Strategy Pattern

Strategy Pattern은 디자인 패턴 중 하나로, 알고리즘의 구현을 캡슐화하여 그것들을 상호 교체할 수 있도록 만든다. 이 패턴은 알고리즘을 사용하는 클라이언트와 독립적으로 알고리즘을 변경할 수 있도록 해줍니다. 기본 구조 Strategy Pattern은 다음과 같은 세 가지 주요 구성 요소로 이루어져 있습니다: Strategy: 이것은 모든 알고리즘(전략)의 공통 인터페이스입니다. ConcreteStrategy: Strategy 인터페이스를 구현한 실제 알고리즘 클래스입니다. Context: Strategy 객체를 사용하는 역할을 합니다. 이는 클라이언트에 의해 설정될 수 있습니다. 언제 사용해야 하는가? 동일한 문제에 대해 여러 가지 해결 방법이 있는 경우 알고리즘이 클래스의 정의와 독립적으로..

프로그래밍/C# 2023.08.15

[WPF] Slider 드래그 완료 시점에 값 업데이트하기

안녕하세요, 오늘은 WPF에서 Slider의 Value를 사용자가 드래그를 완료한 순간에만 업데이트하는 방법에 대해 이야기하려 합니다. 일반적으로 WPF에서는 사용자가 Slider를 드래그하는 동안 실시간으로 값을 업데이트하지만, 이 방법을 사용하면 드래그가 완료된 후에만 업데이트가 이루어집니다. 먼저, 어떤 문제를 해결하려는가? Slider를 사용하면 사용자는 원하는 값을 직접 조절할 수 있습니다. 이때 Slider의 Value를 어떤 속성에 바인딩하면, 사용자가 슬라이더를 드래그하면서 속성 값이 실시간으로 업데이트됩니다. 이런 실시간 업데이트가 문제가 될 수 있습니다. 왜냐하면 슬라이더를 움직이는 동안에도 바인딩된 속성의 값이 계속 변경되면서 원치 않는 연산이나 UI 업데이트가 발생할 수 있기 때문입..

프로그래밍/WPF 2023.07.26
반응형