2010-01-15 3 views
4

그래서 레이아웃을 먼저 디자인 할 수 있습니다. 버튼이있는 콤보 박스가 있고 플러그인 폴더가 있습니다.매우 기본적인 플러그인 시스템을 만드는 방법

내가 plugins 폴더에 imageeffect.cs 플러그인이 있다고 가정 해 보겠습니다. 이 클래스는 반드시 "title"과 같은 속성을 가져야한다. 내 프로그램은이 "제목"을 가져 와서이 제목으로 콤보 박스를 동적으로로드합니다. 이제 내 프로그램이 플러그인을 인식합니다. 이제 사용자가 버튼을 클릭하면 일부 데이터 (프로그램에서 처리)가 imageeffect.cs 플러그인으로 전달되어 원하는 작업을 수행하고 상태를 반환합니다.

이렇게 요약하십시오. 내 프로그램은 플러그인 디렉토리를 읽는다. 각 플러그인의 "title"속성 (플러그인을 만드는 사람을 정의한 사람)을 콤보 상자에로드합니다. 사용자가 버튼을 클릭하면 "데이터"또는이 경우 이미지가 플러그인으로 전송되고 플러그인이 플러그인을 작동시킵니다. 그런 다음 "상태"또는이 경우에는 원하는 효과가있는 사진을 나에게 돌려줍니다.

+1

댓글 : 플러그인 아키텍처 C 번호 그들을 제어하는 ​​어려움이있다하여 "고전적인 문제"표준 "쉬운"솔루션은 각 플러그인을로드 즉 응용 프로그램을 종료하지 않고 언로드 할 수 없음을 의미합니다. 그리고 각 플러그인을 자체 앱 도메인에로드하고 선택적인 언로드는 일부 "해킹"없이는 매우 어려웠습니다. 그래서 나는 아래의 "dtb"답변을 따라 MEF를 보도록 권장합니다. MEF는 이러한 시나리오를 처리하도록 특별히 설계되었으며 (다른 많은 기능도 포함하고 있습니다). – BillW

답변

8

MEFDirectoryCatalog이다.

+0

MEF는 .NET 4.0 용이거나 2.0/3.0/3.5와 호환됩니까? – STW

+2

MEF는 .NET 4.0 Framework에 포함되어 있지만 이전 버전에서 사용하기 위해 MEF 웹 사이트에서 다운로드 할 수도 있습니다. – dtb

관련 문제