Print Page | Close Window

Automatically Resolve Modules

Printed From: IdeaBlade
Category: DevForce
Forum Name: DevForce 2009
Forum Discription: For .NET 3.5
URL: http://www.ideablade.com/forum/forum_posts.asp?TID=1530
Printed Date: 27-Apr-2025 at 4:58pm


Topic: Automatically Resolve Modules
Posted By: smi-mark
Subject: Automatically Resolve Modules
Date Posted: 23-Oct-2009 at 1:51pm
Figured this may be helpful to people working with Prism.

        protected override Microsoft.Practices.Composite.Modularity.IModuleCatalog GetModuleCatalog()
        {
            ModuleCatalog catalog = new ModuleCatalog();
      
            foreach(var type in GetTypesImplementingInterface(typeof(IModule)))
            {
                catalog.AddModule(type);
            }

            return catalog;
        }

        public static IEnumerable<Type> GetTypesImplementingInterface(Type desiredType)
        {
            List<Assembly> assemblies = new List<Assembly>();
             foreach (AssemblyPart ap in Deployment.Current.Parts)
             {
                 StreamResourceInfo sri = Application.GetResourceStream(new Uri(ap.Source,UriKind.Relative));
                 assemblies.Add(new AssemblyPart().Load(sri.Stream));
            }

            return assemblies.SelectMany(assembly => assembly.GetTypes()).Where(type => desiredType.IsAssignableFrom(type) && type.IsClass);
        }



Print Page | Close Window