Example #1
0
        public static void RegisterAllModules(this IModuleFactory moduleFactory, Assembly assembly)
        {
            var foundTypes = assembly
                             .GetTypes()
                             .Where(t => t.GetCustomAttribute <ModuleAttribute>() != null)
                             .ToList();

            foreach (var type in foundTypes)
            {
                ModuleAttribute attribute   = type.GetCustomAttribute <ModuleAttribute>();
                var             description = FillDescriptionFromAttribute(type, attribute);
                moduleFactory.Register(description.ModuleType, description, (runtime, s) => (IModule)s.GetInstance(type), type);
            }

            var typeAliases = assembly
                              .GetTypes()
                              .Where(t => t.GetCustomAttribute <ModuleTypeAliasAttribute>() != null)
                              .ToList();

            foreach (var type in typeAliases)
            {
                ModuleAttribute          moduleAttribute = type.GetCustomAttribute <ModuleAttribute>();
                ModuleTypeAliasAttribute aliasAttribute  = type.GetCustomAttribute <ModuleTypeAliasAttribute>();
                if (moduleAttribute == null || aliasAttribute == null)
                {
                    continue;
                }

                moduleFactory.RegisterAlias(aliasAttribute.AliasType, moduleAttribute.ModuleType, aliasAttribute.IncludeInCatalog);
            }
        }
Example #2
0
 static ModuleDescription FillDescriptionFromAttribute(Type type, ModuleAttribute attribute)
 {
     return(new ModuleDescription
     {
         ModuleType = attribute.ModuleType ?? type.FullName,
         HelpText = attribute.Description,
         ReferenceUrl = attribute.ReferenceUrl,
         IconPath = attribute.IconPath
     });
 }