0
我創建了console c#項目。並在代碼中創建了一個模塊。我的代碼看起來像這樣。如何通過設置路徑獲取插件
[Import]
public IMessageSender MessageSender { get; set; }
public static void Main(string[] args)
{
Program p = new Program();
p.Run();
}
public void Run()
{
Compose();
Console.ReadLine(MessageSender.Send("Message Sent"));
}
private void Compose()
{
AssemblyCatalog catalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
var container = new CompositionContainer(catalog);
container.ComposeParts(this);
}
public interface IMessageSender
{
string Send(string message);
}
[Export(typeof(IMessageSender))]
public class EmailSender : IMessageSender
{
public void Send(string message)
{
return message;
}
}
它工作得很好。但現在我在溶液一個新的項目,並在主控制檯程序我改變了我的一些代碼,添加模塊成 AnotherProject-> EmailSender.cs
[Export(typeof(IMessageSender))]
public class EmailSender : IMessageSender
{
public void Send(string message)
{
return message;
}
}
現在。
private void Compose()
{
var catalog = new DirectoryCatalog(path);
//AssemblyCatalog catalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
var container = new CompositionContainer(catalog);
container.ComposeParts(this);
}
但現在當我運行這個程序。它不加載模塊。主程序中的MessageSender爲null。我做了什麼錯事。
一切都正確完成,在插件中的無效是一個打字錯誤。它是字符串。而且我不是ImportMany,因爲我知道我只有一個模塊用於這個應用程序。我想我需要在目錄編目中添加* .dll。可能會有效。 – 2012-02-29 05:36:55