2013-02-06 3 views
1

웹 응용 프로그램에서 데이터베이스 세션, DAO 등을 얻기 위해 IoC/DI를 사용하는 것이 합리적입니다. "이벤트"를 호출하는 사람이 아니기 때문에 인젝터입니다. 이벤트 함수에 적절한 매개 변수를 선언하면됩니다.Winforms and IoC/DI

하지만 winforms 앱에서는 함수를 호출하는 사용자와 사용자 만 사용할 수 있습니다. "쿼리 문자열 처리기"가 없습니다.


정말

private void button1_Click(object sender, EventArgs e); 

에서

private void button1_Click(object sender, EventArgs e, DbSession dbSession); 

와 "처리기"자동으로 물건을 주사로 변경하는 것은 불가능 들린다.


그래서, 물건은 다음과 같습니다 윈폼에서 난 그냥 등의 SessionFactory와 같은 모든 내 "UTIL"인스턴스를 포함하는 싱글 톤 또는 정적 클래스를 구현해야? winforms에 삽입을위한 디자인 패턴이나 모범 사례가 무엇입니까?

답변

1

는 의존성 삽입 (Dependency Injection)

  • 생성자 삽입의 다른 맛의 몇 가지가 있습니다 - 객체 생성시 생성자 함수를 통해
  • 세터 주입을 종속성을 첨부 - setter 속성
  • 인터페이스 주입을 통해 종속성을 부착 - 이상한 오리입니다 (특정 DI 툴에 의해 사용되는 사용법)
  • 서비스 로케이터 - 의존성을 검색하고 생성하는 방법을 알고있는 잘 알려진 클래스를 사용하십시오. 기술적으로 DI는 아니지만 대부분의 DI/IoC 컨테이너 도구가 실제로하는 것입니다.

    종속성 주입은 컨테이너의 범위 밖에서 객체를 생성함으로써 문제를 해결합니다 (밀착 커플 링).

    밖으로 detailed explanation with examples

0

체크 난 당신이 버튼 클릭에 대한 일반 이벤트 핸들러 내부에 비즈니스 로직을 넣어되고 싶어 생각하지 않습니다. 당신은 이벤트 처리기 내부에서 이것을 처리 할 다른 객체를 호출하거나 객체 자체가 버튼 클릭 이벤트에 가입하도록해야합니다.

+0

그래서 "내 다른 객체"의 인스턴스를 어떻게 가져올 수 있습니까? 버튼 클릭 이벤트에서 인스턴스화 하시겠습니까? 의존성은 어떻습니까? 그런 식으로 나는 단단한 커플 링 문제가 발생합니다. – Stew