2
메타 데이터를 기반으로 모듈을 내보내려고합니다. compositioncontainer
두 가지의 카탈로그메타 데이터를 기반으로 한 mef 내보내기
[1] = {Modules.ProjectModule}
[0] = {Modules.DocumentsModule}
에서 부품 만 GetExportedValues
아무것도 반환이 포함되어 있습니다.
[ImportMany(typeof(IModule))]
private List<Lazy<IModule, IModuleInfo>> specific_modules { get; set; }
public ShellViewModel()
{
DirectoryCatalog catalaog = new DirectoryCatalog(System.AppDomain.CurrentDomain.BaseDirectory + @"\Modules", "*.*");
CompositionContainer compositioncontainer = new CompositionContainer(catalaog);
specific_modules = compositioncontainer.GetExportedValues<Lazy<IModule, IModuleInfo>>().ToList();
Documents = specific_modules.FirstOrDefault<Lazy<IModule, IModuleInfo>>().Metadata.DisplayName;
}
public interface IModuleInfo
{
string DisplayName { get; }
string Description { get; }
string Version { get; }
}
public interface IModule
{
string Name { get; }
}
namespace Modules
{
[Export(typeof(IModule))]
[ExportMetadata("DisplayName", "Documents")]
[ExportMetadata("Description", "gérer les docs")]
[ExportMetadata("Version", "2.1")]
public class DocumentsModule : IModule
{
public string Name
{
get
{
return "Documents";
}
}
}
}