gpt4 book ai didi

wpf - 运行目录的所有模块( Prism )

转载 作者:行者123 更新时间:2023-12-04 06:45:23 25 4
gpt4 key购买 nike

我正在使用 Prism 的桌面库。

我想要的是在目录中获取模块,然后运行它们。

我喜欢这样:

DirectoryModuleCatalog catalog = new DirectoryModuleCatalog();
catalog.ModulePath = @"C:\Users\Raph\Documents\Visual Studio 2010\Projects\LibraryLoad\LibraryLoad\Modules";

我检查了,模块已加载到目录中。
模块示例:
public class SendEmailClass : IModule
{
public void SendEmail()
{
MailMessage mail = new MailMessage();
mail.From = new MailAddress("**", "moi");
mail.Subject = "Report"; //manage generated subject

mail.To.Add("***");

System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("smtp.gmail.com");
smtp.Port = 57;
smtp.EnableSsl = true; //depending of the smtp server
NetworkCredential cred = new NetworkCredential("***", "***");
smtp.Credentials = cred;
smtp.Send(mail);
}

public void Initialize()
{
SendEmail();
}
}

但后来我想运行它们(启动它们的 Initialize()),但我没有找到它。我想运行整个目录。有人有想法吗?我尝试了 catalog.Initialize()、catalog.Validate() 或 catalog.Load()

最佳答案

您的代码看起来正确,我的印象是您必须覆盖 GetModuleCatalog()您的 Bootstrapper 中的方法为了做到这一点,上课。这是一个非常简单的工作示例Bootstrapper从模块目录加载模块。

public class Bootstrapper : UnityBootstrapper
{
private const string MODULE_FOLDER = @".\modules";

protected override IModuleCatalog GetModuleCatalog()
{
DirectoryModuleCatalog catalog = new DirectoryModuleCatalog() { ModulePath = MODULE_FOLDER };
return catalog;
}
}

更新

可能不使用 Bootstrap 并加载您的模块,但我不明白您为什么不利用 UnityBootstrapper类,它为你工作。
Bootstrapper bootStrapper = new Bootstrapper();
bootStrapper.Run();

您的模块将被加载。我自己从来没有在不使用 Bootstrap 的情况下这样做,因为它非常简单。

关于wpf - 运行目录的所有模块( Prism ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3805420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com