Esempio n. 1
0
        public static void Initialize(params Assembly[] AdditionalAssemblies)
        {
            if (IsInitialized)
            {
                return;
            }

            List <Assembly> TargetAssemblies = AdditionalAssemblies.ToList();

            TargetAssemblies.Add(typeof(Message).GetTypeInfo().Assembly);

            TypeInfo[] MessageTypes = TargetAssemblies.SelectMany(x => x.ExportedTypes).Select(x => x.GetTypeInfo()).Where(x => x.IsSubclassOf(typeof(Message))).ToArray();

            Dictionary <Type, int> SubTypeCount = new Dictionary <Type, int>();

            for (int i = 0; i < MessageTypes.Length; i++)
            {
                MetaType ProtobufType;

                if (!SubTypeCount.ContainsKey(MessageTypes[i].BaseType))
                {
                    ProtobufType = RuntimeTypeModel.Default.Add(MessageTypes[i].BaseType, true);
                    SubTypeCount[MessageTypes[i].BaseType] = 101;
                }
                else
                {
                    ProtobufType = RuntimeTypeModel.Default[MessageTypes[i].BaseType];
                }

                ProtobufType.AddSubType(SubTypeCount[MessageTypes[i].BaseType], MessageTypes[i].AsType());
                SubTypeCount[MessageTypes[i].BaseType]++;
            }

            IsInitialized = true;
        }
        /// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

        private async Task PerformModuleLoadAsync(string moduleName)
        {
            var assemblyName = new AssemblyName
            {
                Name    = moduleName,
                Version = null,
            };

            var lazyPageAssembly = _assemblyLoader.GetLoadedAssemblyByName(assemblyName);

            if (lazyPageAssembly == null)
            {
                Render(Loading(moduleName)); // show loading RenderFragment

                lazyPageAssembly = await _assemblyLoader
                                   .LoadAssemblyByNameAsync(new AssemblyName
                {
                    Name    = moduleName,
                    Version = null,
                })
                                   .ConfigureAwait(true); // continue in render thread
            }

            if (lazyPageAssembly == null)
            {
                throw new InvalidOperationException("Page cannot load if assembly failed to load");
            }

            AdditionalAssemblies = AdditionalAssemblies == null
                ? new[] { lazyPageAssembly }
                : AdditionalAssemblies.Concat(new[] { lazyPageAssembly });

            await RefreshLazyRouteTableAsync();
        }
Esempio n. 3
0
        protected void AddAssembly(AdditionalAssembly assembly)
        {
            if (assembly is null)
            {
                throw new ArgumentNullException(nameof(assembly));
            }

            if (AdditionalAssemblies == null)
            {
                AdditionalAssemblies = new HashSet <AdditionalAssembly>();
            }

            AdditionalAssemblies.Add(assembly);
        }