public static void AddAttributedModules(this IReactPackageBuilder packageBuilder) { foreach (var attributedModule in m_attributedModules.Value) { attributedModule.Value.AddToPackageBuilder(packageBuilder); } }
/// <summary> /// Helper extension method to register a reflection /// </summary> /// <typeparam name="T">This must be thea type defined in the assembly where the items for the react package should be extracted.</typeparam> /// <remarks> /// The common use case of this type is when you have a react library. Then you would call this from the <see cref="IReactPackageBuilder.CreatePackage"/> function in ReactPackageProvider class that implements <see cref="IReactPackageProvider"/> like: <c> /// public sealed class ReactPackageProvider : IReactPackageProvider /// { /// public void CreatePackage(IReactPackageBuilder packageBuilder) /// { /// packageBuilder.AddReflectionReactPackageProvider<ReactPackageProvider>(); /// } /// } /// </c>. /// </remarks> public static void AddReflectionReactPackageProvider <T>(this IReactPackageBuilder packageBuilder) { var assembly = typeof(T).Assembly; packageBuilder.AddAttributedModules(assembly); packageBuilder.AddViewManagers(assembly); JSValueReaderGenerator.RegisterAssembly(assembly); JSValueWriterGenerator.RegisterAssembly(assembly); }
/// <summary> /// This method registered the attributed models for the given assembly via reflection to the package builder. /// </summary> public static void AddAttributedModules(this IReactPackageBuilder packageBuilder, Assembly assembly) { var attributedModules = s_registeredAssemblies.GetOrAdd(assembly, asm => new Lazy <Dictionary <string, AttributedModule> >(() => InitAttributedModules(asm))); foreach (var attributedModule in attributedModules.Value.Values) { attributedModule.AddToPackageBuilder(packageBuilder); } }
public static bool TryAddAttributedModule(this IReactPackageBuilder packageBuilder, string moduleName) { if (m_attributedModules.Value.TryGetValue(moduleName, out var attributedModule)) { attributedModule.AddToPackageBuilder(packageBuilder); return(true); } return(false); }
internal static void AddViewManagers(this IReactPackageBuilder packageBuilder) { foreach (var typeInfo in typeof(ReactPackageBuilderExtensions).GetTypeInfo().Assembly.DefinedTypes) { if (!typeInfo.IsAbstract && typeInfo.ImplementedInterfaces.Contains(typeof(IViewManager))) { packageBuilder.AddViewManager(typeInfo.Name, () => (IViewManager)Activator.CreateInstance(typeInfo.AsType())); } } }
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); } } }
public static bool TryAddAttributedModule(this IReactPackageBuilder packageBuilder, string moduleName) { if (s_registeredAssemblies.TryGetValue(s_currentAssembly, out var attributedModules)) { if (attributedModules.Value.TryGetValue(moduleName, out var attributedModule)) { attributedModule.AddToPackageBuilder(packageBuilder); return(true); } } return(false); }
internal static void AddViewManagers(this IReactPackageBuilder packageBuilder) { foreach (var typeInfo in typeof(ReactPackageBuilderExtensions).GetTypeInfo().Assembly.DefinedTypes) { if (!typeInfo.IsAbstract && typeInfo.ImplementedInterfaces.Contains(typeof(IViewManager))) { if (typeInfo.DeclaredConstructors.Any(cInfo => cInfo.GetParameters().Length == 1 && cInfo.GetParameters()[0].ParameterType == typeof(IReactContext))) { packageBuilder.AddViewManager(typeInfo.Name, (reactContext) => (IViewManager)Activator.CreateInstance(typeInfo.AsType(), reactContext)); } else if (typeInfo.DeclaredConstructors.Any(cInfo => cInfo.GetParameters().Length == 0)) { packageBuilder.AddViewManager(typeInfo.Name, (reactContext) => (IViewManager)Activator.CreateInstance(typeInfo.AsType())); } } } }
public void CreatePackage(IReactPackageBuilder packageBuilder) { packageBuilder.AddReflectionReactPackageProvider <ReactPackageProvider>(); }
public void CreatePackage(IReactPackageBuilder packageBuilder) { packageBuilder.AddAttributedModules(); }
public void CreatePackage(IReactPackageBuilder packageBuilder) { packageBuilder.AddViewManagers(); Console.WriteLine("VIEWIE"); }
public void CreatePackage(IReactPackageBuilder packageBuilder) { packageBuilder.AddViewManager("LottieAnimationView", () => { return(new LottieAnimationViewManager()); }); }
public void CreatePackage(IReactPackageBuilder packageBuilder) { CreatePackageImplementation(packageBuilder); packageBuilder.AddAttributedModules(); }
public virtual void CreatePackage(IReactPackageBuilder packageBuilder) { ReflectionReactPackageProviderExtensions.AddReflectionReactPackageProvider <T>(packageBuilder); }
/// <summary> /// Adds the view manages in the given assembly via reflection to the package builder. /// </summary> /// <remarks> /// This method will be obsolete soon. It should only be called by existing generated project that still use the `Microsoft.ReactNative.SharedManaged` project /// where s_currentAssembly will reflect the users assembly that compiles this code as well. /// </remarks> public static void AddViewManagers(this IReactPackageBuilder packageBuilder) { AddViewManagers(packageBuilder, s_currentAssembly); }
/// <summary> /// This method is implemented by the C# code generator /// </summary> partial void CreatePackageImplementation(IReactPackageBuilder packageBuilder);
/// <summary> /// Adds the attributed models for the current assembly via reflection to the package builder. /// </summary> /// <remarks> /// This method will be obsolete soon. It should only be called by existing generated project that still use the `Microsoft.ReactNative.SharedManaged` project /// where s_currentAssembly will reflect the users assembly that compiles this code as well. /// </remarks> public static void AddAttributedModules(this IReactPackageBuilder packageBuilder) { AddAttributedModules(packageBuilder, s_currentAssembly); }
public void AddToPackageBuilder(IReactPackageBuilder packageBuilder) { ReactModuleInfo moduleInfo = ReactModuleInfo.GetOrAddModuleInfo(ModuleType, ModuleAttribute); packageBuilder.AddModule(moduleInfo.ModuleName, moduleInfo.ModuleProvider); }
public void CreatePackage(IReactPackageBuilder packageBuilder) { CreatePackageImplementation(packageBuilder); }
public void CreatePackage(IReactPackageBuilder packageBuilder) { packageBuilder.AddViewManagers(); }