Im пытается экспортировать все классы, реализующие интерфейс IJob
, а также передачу метаданных на уровне отдельного класса. То, что я пробовал:MetaData with InheritedExport
Экспорт:
[InheritedExport(typeof(IJob))]
public interface IJob
{
int Run();
}
Импорт:
[ImportMany]
public IEnumerable<Lazy<IJob, IJobMetaData>> Jobs { get; set; }
Реализация:
[IgnoreJob(false)]
public class MyJob : IJob
{
public int Run()
{
return 5;
}
}
установки атрибутов:
[MetadataAttribute]
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
public class IgnoreJobAttribute : ExportAttribute, IJobMetaData
{
public IgnoreJobAttribute(bool ignore)
: base(typeof(IJobMetaData))
{
Ignore = ignore;
}
[DefaultValue(true)]
public bool Ignore { get; set; }
}
выше делает не передать мои метаданные, но если удалить атрибут InheritedExport
и добавить атрибут Export
к индивидуальной реализации IJob он прекрасно работает ...
Возможный дубликат: http://stackoverflow.com/questions/6570930/how-to-use-mef-inherited-export-metadata –
К сожалению, нет! У них по крайней мере были * некоторые * метаданные, у меня их нет. – InContext