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";
}
}
}
}