private static Dictionary <string, AttributedModule> InitAttributedModules(Assembly assembly)
        {
            var initializers =
                from typeInfo in assembly.DefinedTypes
                let moduleAttribute = typeInfo.GetCustomAttribute <ReactModuleAttribute>()
                                      where moduleAttribute != null
                                      select new AttributedModule {
                ModuleType = typeInfo.AsType(), ModuleAttribute = moduleAttribute
            };

            return(initializers.ToDictionary(m => ReactModuleInfo.GetModuleName(m.ModuleType, m.ModuleAttribute)));
        }
 internal static void AddAttributedModules(this IReactPackageBuilder packageBuilder)
 {
     foreach (var type in typeof(ReactPackageBuilderExtensions).GetTypeInfo().Assembly.GetTypes())
     {
         var moduleAttribute = type.GetTypeInfo().GetCustomAttribute <ReactModuleAttribute>();
         if (moduleAttribute != null)
         {
             ReactModuleInfo moduleInfo = ReactModuleInfo.GetOrAddModuleInfo(type, moduleAttribute);
             packageBuilder.AddModule(moduleInfo.ModuleName, moduleInfo.ModuleProvider);
         }
     }
 }
Exemplo n.º 3
0
        internal static ReactModuleInfo GetOrAddModuleInfo(Type moduleType, ReactModuleAttribute moduleAttribute)
        {
            lock (s_moduleInfoMutex)
            {
                if (s_moduleInfos is null)
                {
                    s_moduleInfos = new Dictionary <Type, ReactModuleInfo>();
                }

                if (s_moduleInfos.TryGetValue(moduleType, out ReactModuleInfo moduleInfo))
                {
                    return(moduleInfo);
                }

                moduleInfo = new ReactModuleInfo(moduleType, moduleAttribute);
                s_moduleInfos.Add(moduleType, moduleInfo);
                return(moduleInfo);
            }
        }
            public void AddToPackageBuilder(IReactPackageBuilder packageBuilder)
            {
                ReactModuleInfo moduleInfo = ReactModuleInfo.GetOrAddModuleInfo(ModuleType, ModuleAttribute);

                packageBuilder.AddModule(moduleInfo.ModuleName, moduleInfo.ModuleProvider);
            }