성댕쓰 똑똑한 생활

고정 헤더 영역

글 제목

메뉴 레이어

성댕쓰 똑똑한 생활

메뉴 리스트

  • 홈
  • 태그
  • 방명록
  • 분류 전체보기 (172)
    • 똑똑한 재테크 (1)
      • 올웨더 자산배분 (1)
    • 똑똑한 개발 (170)
      • Hazel 게임엔진개발 (0)
      • Algorithm 과 Data Structure (51)
      • C++ (18)
      • C# (8)
      • 개발로그 (0)
      • Image Processing (2)
      • C++ 게임개발 (60)
      • 컴퓨터 그래픽스 (10)
      • 수학 (13)
      • 영어 (8)

검색 레이어

성댕쓰 똑똑한 생활

검색 영역

컨텐츠 검색

똑똑한 개발/C#

  • 생성자에서 가상함수 부르면 안되는 이유

    2022.06.15 by 성댕쓰

  • [WPF] Command

    2022.04.20 by 성댕쓰

  • [WPF] Dependency Property Metadata

    2022.04.19 by 성댕쓰

  • [WPF] Databinding

    2022.04.18 by 성댕쓰

  • [WPF] Pack uri

    2022.04.15 by 성댕쓰

  • c# (WPF) Data Binding 에 대해서

    2021.05.31 by 성댕쓰

  • nInject 사용하는 간단한 방법

    2021.05.29 by 성댕쓰

  • Dependency Injection 에 대해서

    2021.05.24 by 성댕쓰

생성자에서 가상함수 부르면 안되는 이유

상황 base class 생성자에서 virtual 함수를 호출함. derived class 에서 1.에서 호출한 함수를 override 한 상태임. override 한 함수 호출됨. derived class 생성자가 아직 불리지 않음. 호출된 함수에서 사용하는 리소스를 생성자에서 초기화함. 따라서 null ref exception 발생함. 위처럼 base class 생성자에서 override 가능한 가상함수 호출하면 문제가 발생할 수 있다. 따라서, 만약의 경우를 대비하여 생성자에서 가상함수를 부르지 않도록 하자. WPF Property System WPF에서 제공하는 dependency property는 metadata의 콜백함수를 override할 수 있는 기능을 제공한다. dependecny pro..

똑똑한 개발/C# 2022. 6. 15. 10:49

[WPF] Command

Comamnd 란? WPF의 input 매커니즘 중 하나. 사용하는 이유 다음 두 개를 분리하기 위해 사용. command 발생시키는 object command 실행하는 logic Action 실행가능한지 확인하기 위해 사용. ex. CanExcute, CanExcuteChaged 4가지 main concept command, command source, command target, command binding이 command를 구성한다. command는 실행할 액션. command source는 command를 호출할 object. command target은 action 목적지. command binding은 command와 command logic의 연결. command : paste command..

똑똑한 개발/C# 2022. 4. 20. 12:51

[WPF] Dependency Property Metadata

Dependency Property Metadata 언제 씀? Dependency property 특징을 정의할 때 사용함. Metadata type dependency property의 default value. 어떤 행동을 강제하거나 알람 행동을 바꾸는 callback reference wpf framework level에서 사용하는 특징(Framework Property Metadata) Metadata를 재정의하여 이미 있는 property의 동작을 바꿀 수 있다. 그러나 validation callback은 metadata 영역이 아닌 property identifier역할이다. 따라서 metadata를 재정의 하여 validation callback을 바꿀 수 없다. Overriding Met..

똑똑한 개발/C# 2022. 4. 19. 14:20

[WPF] Databinding

Data binding이란 app ui와 data를 연결 맺는 것을 말함. 모든 바인딩은 아래의 모델을 따름. binding target과 binding source를 연결한다. 일반적으로 다음의 4가지 컴포넌트가 있다. binding target 객체 target property binding source binding source가 사용할 path 예를 들어 TextBox text와 Employee.Name을 binding하면 각 컴포넌트는 다음과 같다. binding target : TextBox target property : Text source object : Employee source path : Name target property는 dependency property이어야 함 DataC..

똑똑한 개발/C# 2022. 4. 18. 12:03

[WPF] Pack uri

Open Packaging Convetions에서 사용하는 spec이다. package와 part가 주요 element이다. package는 part를 갖는 logical container이다. package에는 authority와 path가 있다. - authority는 package의 타입을 표시함. (application과 비슷) - path는 package 안 part의 위치를 표시함. (file과 비슷) wpf는 2개의 authority를 제공 1) application:// 2) siteoforigin:// application://은 컴파일 타임에 알고 있는 application data file을 구별한다. (resource, content file등) siteoforigin은 잘 모르겠다..

똑똑한 개발/C# 2022. 4. 15. 10:04

c# (WPF) Data Binding 에 대해서

데이터 바인딩 구조 바인딩 대상 : UI 요소 바인딩 소스 : 데이터 바인딩 개체 : 대상과 소스를 연결 바인딩 개체가 제공하는 바인딩 방식 OneWay : 소스에서 대상으로만 데이터가 전달. ex) TextBox 의 Text 속성(바인딩 대상)에 바인딩 된 string 객체(바인딩 소스). TwoWay : 소스, 대상 양방향 데이터 전달. OneWayToSource : OneWay 반대 방향 OneTime : 한번만 소스가 대상을 초기화. 이후 변경 안됌. UpdateSourceTrigger TwoWay 방식에서 대상에서 소스로 전달되는 과정 LostFocus : UI 요소가 포커스를 잃었을 때 바인딩 소스를 업데이트 한다. PropertyChanged : UI 요소의 바인딩 된 속성 값이 변경될 때 ..

똑똑한 개발/C# 2021. 5. 31. 22:02

nInject 사용하는 간단한 방법

사용하는 이유는? 의존성을 주입할 수 있음. 주입 할 수 있기 때문에 의존성을 제거할 수 있음. 사용하는 방법은? manual dependency injection 을 Ninject로 바꿔보자. 코드 설명 formHandler 가 mailSender 를 가지고 있음. mailSender 를 유연하게 쓰고 싶음. class Program { static void Main(string[] args) { IMailSender mailSender = new MockMailSender(); FormHandler formHandler = new FromHandler(mailSender); fromHandler.Handle("test@test.com"); } } 위의 manual dependecy injection ..

똑똑한 개발/C# 2021. 5. 29. 15:10

Dependency Injection 에 대해서

Dependency Injection 이란? 의존성 주입(DI) 느슨한 결합을 가능하게 하는 디자인 패턴 장점 : 클래스간 결합도 감소. 코드 재사용성 증가. 단위 테스트 용이. 코드의 유지보수 용이. ex ) 신발가게에서 신발을 주문하면 공장에서 만드는 시나리오 Shoes.class(신발 정보를 나타내는 신발 클래스) public class Shoes { public string Name{get; set;} public int Size{get; set;} } IShoesFactory.interface(신발공장 인터페이스) interface IShoesFactory { public Shoes MakeShoes(); } NShoes.class(인터페이스를 상속받은 NShoes 클래스) public clas..

똑똑한 개발/C# 2021. 5. 24. 21:50

추가 정보

인기글

최신글

페이징

이전
1
다음
TISTORY
성댕쓰 똑똑한 생활 © Magazine Lab
페이스북 트위터 인스타그램 유투브 메일

티스토리툴바