如何告诉MEF此接口需要哪种类型
本文关键字:种类 类型 接口 何告诉 MEF | 更新日期: 2023-09-27 18:21:24
我有以下内容:
public interface IEmailService
{
bool SendEmail(MailMessage message);
}
[Export(typeof(IEmailService))]
public class SmtpEmailService : IEmailService
{
}
[Export(typeof(IEmailService))]
public class AmazonEmailService : IEmailService
{
}
如何根据某些条件导入特定的?
例如,当我使用服务时,我有这样的东西:
public class MobileService
{
[Import]
public IEmailService EmailService { get; set; }
有没有办法在配置文件或任何其他地方配置MEF,以便它自动知道要导入哪个版本的EmailService
?
您可以在导出时在Export
属性中指定合同的名称,然后使用在Import
属性中导出的名称之一,如下所示:
[Export("SmtpEmailService", typeof(IEmailService))]
public class SmtpEmailService : IEmailService {
}
[Export("AmazonEmailService", typeof(IEmailService))]
public class AmazonEmailService : IEmailService {
}
[Import("AmazonEmailService")]
public IEmailService EmailService { get; set; } //Import a specific type
如果您还想使用ImportMany,请参阅http://mef.codeplex.com
还有一个类似的SO问题应该会对你有所帮助。