2010-12-14 69 views
0

我試着去開發編輯器,比如VS編輯器,我HAWE如FTP,TELNET(其中拖動和設計師的下降,他們在PropertyGrid中彼此改變性質等進行連接),然後執行部件使用MEF。使用MEF掃描具有接口IComponent的所有dll-s,然後使用反射從dll-s獲取原始對象是個好主意。例如在編輯器中

[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(); 
} 

或者是另一種方法,從IComponent的從MEF獲得原始對象像元..因爲PropertyGrid的NEAD實物用於顯示FTP服務器並從MessageBox的消息屬性。 對不起,我的英語不好。

+0

看起來不錯。但問題是什麼?有沒有你不知道如何實施的部分? propertygrid如何顯示對象時是否存在問題?其他一些問題? – 2010-12-14 18:26:52

回答

0

對於MEF的工作,任何程序集/ dll在你的應用程序必須執行Exports。如果沒有,你將無法Import什麼。

要與裝配/不具有任何出口的dll,使用反射努力搜索實現IComponent類型。並使用Activator類從其類型信息創建實例。

+0

但是就像你看到的我哈威爲我所有的組件哈威出口也是在主窗口中我哈威importmany所有ICOmponents MEF的問題是如何從出口的IComponent得到真正的對象例如FTP,我從成分得到,. – 2010-12-14 18:31:38

相關問題