通过MEF中的ExportMetadata属性导入对象
本文关键字:导入 对象 属性 ExportMetadata MEF 中的 通过 | 更新日期: 2023-09-27 17:49:55
我想问一下,是否可以通过ExportMetadata值导入一些对象?例如:string。或如果我通过名称和类型声明了一些Export对象,我能通过类型导入它们吗?
您需要通过Lazy
或ExportFactory
推迟部件的创建。例如,给定我的样本类型:
[Export(typeof(ILogger)), ExportMetadata("Name", "Console")]
public class ConsoleLogger : ILogger
{
}
我需要一个元数据接口:
public interface INamedMetadata
{
string Name { get; }
}
然后我可以导入许多实例:
[ImportMany(typeof(ILogger))]
IEnumerable<Lazy<ILogger, INamedMetadata>> Loggers { get; set; }
并选择:
public ILogger GetLogger(string name)
{
return Loggers
.Where(l => l.Metadata.Name.Equals(name))
.Select(l => l.Value)
.FirstOrDefault();
}