MEF를 사용하여 필요할 때 DLL을로드하려고하는데 읽은 튜토리얼의 정보가 도움이되지 않았습니다.MEF DLL을 하나씩로드하십시오.
This site은 약간의 코드를 제공하지만 실제로는 설명하지 않습니다.
private void LoadPlugins() {
var catalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
var container = new CompositionContainer(catalog);
var batch = new CompositionBatch();
batch.AddPart(this);
container.Compose(batch);
}
기본적으로 나는 Run 메서드와 인터페이스가 있으며 여러 DLL을 사용하여 해당 인터페이스를 구현하고 있습니다. 무엇 난 후는
bob = LoadDll(dllPath);
bob.Run();
는 "밥"의 유형을 지정하는 방법이 있나요이 (의사 코드) 같은 것을 할 수있을 것입니다 아니면 일반적인 것입니까? 누구든지 도와 주시면 감사하겠습니다!
로드 할 항목을 어떻게 알 수 있습니까? MEF의 핵심은 추상/인터페이스 정의를 제외하고는 구체적인 유형에 대해 * 아무것도 * 알지 못한다는 것입니다. 특정 DLL에서 가져 오기를로드하는 것이 적절한 지 어떻게 알 수 있습니까? – arootbeer
@arootbeer 사실, 이것은 MEF의 한 가지 용도이지만 인스턴스화하려는 구체적인 유형을 이미 알고 있다면 완벽하게 유효합니다. 그러나, 나는이 경우에 사용법이 OP가 달성하려고하는 것에 대해 과잉이라고 생각한다. 어셈블리에서 어떤 타입의 타입을 런타임에 발견 할 필요가 있다면 (또는 타입을 노출하는 경우) MEF가 완벽합니다. – SRM