2010-12-14 2 views
0

나는 FTP, TelNet (디자이너에서 드래그 앤 드롭하여 PropertyGrid의 속성을 서로 연결하는 등)과 같은 구성 요소가있는 VS 편집기와 같은 편집기를 개발하려고 시도하고 실행합니다. MEF를 사용하여 IComponent 인터페이스가있는 모든 DLL을 스캔 한 다음 리플렉션을 사용하여 dll-s에서 원래 Object를 가져 오는 것이 좋습니다. 예를편집자에서 MEF 사용하기

[Export(typeof(ICOmponent))] 
[MetadataExport("Name", "FTP")] 
public class FTP : ICOmponent 
{ 
    public string Server { get; set; } 
    public void Start() 
    { 
     ....ConectTOServer(Server); 
    } 
} 
[Export(typeof(ICOmponent))] 
[MetadataExport("Name", "MessageBox")] 
public class MessageBox : ICOmponent 
{ 
    public string Message { get; set; } 
    public void Start() 
    { 
     System.Windows.Forms.MessageBox.Show(Message); 
    } 
} 

public interface ICOmponent 
{ 
    void Start(); 
} 

또는 PropertyGrid가이 FTP 서버 및 메시지 박스 메시지에서 속성을 표시하는 실제 개체를이 nead 때문에 .. 메타 데이터에서 같은 ICOmponent에서 MEF에서 원래 개체를 얻을 수있는 또 다른 방법이다. 나쁜 영어로 죄송합니다.

+0

좋아요. 그러나 질문은 무엇입니까? 구현 방법을 모르는 부분이 있습니까? propertygrid가 객체를 표시하는 방법에 문제가 있었습니까? 다른 문제가 있습니까? –

답변

1

귀하의 글은 Microsoft의 Mike Taulty가 제공하는이 비디오 시리즈가 도움이 될만한 MEF에 대해 일반적으로 나타납니다 : "Learning about MEF in SL4 from Mike Taulty"; 이 시리즈를 보는 것은 당신의 시간 낭비가되지 않습니다.

MEF에 대해 reading을 선호 할 수도 있습니다.

0

MEF을 사용하려면 응용 프로그램에 삭제 된 모든 어셈블리/dll이 Exports을 구현해야합니다. 그렇지 않으면 Import에 액세스 할 수 없습니다.

내보내기가없는 어셈블리/dll을 사용하려면 reflection을 사용하여 IComponent을 구현하는 유형을 검색하십시오. Activator 클래스를 사용하여 유형 정보에서 인스턴스를 만듭니다.

+0

하지만 당신은 모든 구성 요소를 볼 수 있습니다. 주요 창에서 내보내기도 가능합니다. 모든 ICOmponents에 대한 importmany가 있습니다. MEF의 문제는 구성에서 얻은 내 보낸 ICOmponent에서 실제 개체 예제 FTP를 얻는 방법입니다. –