Pracuję nad przykładową aplikacją PRISM i chcę użyć MEF RegistrationBuilder
, aby utworzyć cały mój eksport. Równowartość pomocą ExportAttribute
jest następujący:Czy można użyć MEF RegistrationBuilder do utworzenia modułu PRISM ModuleExport?
[Export(typeof(IFooService))]
public class FooService : IFooService { ... }
Builder.ForTypesMatching(typeof(IFooService).IsAssignableFrom(type)).Export<IFooService>();
Jednak moduły użyć innego atrybutu The ModuleExportAttribute
, na przykład:
[ModuleExport(typeof(ModuleA), DependsOnModuleNames = new string[] { "ModuleB" })]
public sealed class ModuleA : IModule { ... }
Nie jestem pewny jak używać klasy RegistrationBuilder
do utwórz eksport modułu zamiast korzystać z ModuleExportAttribute
. Czy jest to możliwe, ponieważ jest eksportowany inaczej niż standardowy eksport?
Kod sugerowany działa; Ważne jest, aby pamiętać, że musisz użyć właściwego przeciążenia 'Export()'. Ponadto nie jest konieczne dodawanie wszystkich metadanych, tylko części, których potrzebujesz, reszta będzie miała domyślną wartość, co jest w porządku, jeśli nie chcesz określać rzeczy, takich jak 'InitializationMode' lub zależności. Dziękuję Ci! –
Po sprawdzeniu nie mogłem załadować modułów, które zawierały metadane 'DependsOnModuleNames', więc założyłem, że wymagane jest dodanie wszystkich metadanych. Może niektóre właściwości są wymagane, a niektóre są opcjonalne, ale nie jestem pewien, w jaki sposób można wiedzieć, które są które. –