我目前正在开发一个基于C#的应用程序,该应用程序加载了许多不同的模块(用于硬件组件的.net驱动程序等)。该应用程序应提供某种插件/加载项管理器以选择专用模块(仅专用的一组设备,过滤器,组件)。基于一个事实,即MS提供了一个完善的框架MEF,我认为尝试一下是个好主意。
我当前面临的主要问题是,在通过 onSelectFile(event) {
let element: HTMLElement =
document.querySelector('input[type="file"]') as HTMLElement;
element.click();
if (event.target.files && event.target.files[0]) {
const file = event.target.files[0];
const reader = new FileReader();
reader.readAsDataURL(file); // read file as data url
reader.onload = (event) => { // called once readAsDataURL is completed
this.addPicture(reader.result, file);
this.changeDetectorRef.detectChanges();
};
}
}
扫描文件夹中的加载项之后,所有程序集都已加载到进程中(当前未实例化任何内容,因为我使用了“惰性”机制)。
尽管如此,当用户稍后决定只选择其中一些组件时,我还是希望避免在过程中加载所有组件。
因此,我尝试找到一种方法来获取加载项元数据,而又不将程序集加载到流程中。我已经看到DirectoryCatalog
框架似乎支持基于XML的清单的这种情况-但我不确定用MEF是否可以完成类似的工作?