From 04c0b9d37d4c5bc29c714c999db2bbdfe2d77873 Mon Sep 17 00:00:00 2001 From: Shaun Walker Date: Tue, 14 Mar 2023 20:37:42 -0400 Subject: [PATCH] add defensive logic to Oqtane.Maui for loading modules which have not declared all dependencies --- Oqtane.Maui/MauiProgram.cs | 30 ++++++++++++++++++++++-------- Oqtane.Maui/Oqtane.Maui.csproj | 2 +- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/Oqtane.Maui/MauiProgram.cs b/Oqtane.Maui/MauiProgram.cs index f3bf065a..0c297b0e 100644 --- a/Oqtane.Maui/MauiProgram.cs +++ b/Oqtane.Maui/MauiProgram.cs @@ -212,23 +212,37 @@ public static class MauiProgram private static void RegisterModuleServices(Assembly assembly, IServiceCollection services) { // dynamically register module scoped services - var implementationTypes = assembly.GetInterfaces(); - foreach (var implementationType in implementationTypes) + try { - if (implementationType.AssemblyQualifiedName != null) + var implementationTypes = assembly.GetInterfaces(); + foreach (var implementationType in implementationTypes) { - var serviceType = Type.GetType(implementationType.AssemblyQualifiedName.Replace(implementationType.Name, $"I{implementationType.Name}")); - services.AddScoped(serviceType ?? implementationType, implementationType); + if (implementationType.AssemblyQualifiedName != null) + { + var serviceType = Type.GetType(implementationType.AssemblyQualifiedName.Replace(implementationType.Name, $"I{implementationType.Name}")); + services.AddScoped(serviceType ?? implementationType, implementationType); + } } } + catch + { + // could not interrogate assembly - likely missing dependencies + } } private static void RegisterClientStartups(Assembly assembly, IServiceCollection services) { - var startUps = assembly.GetInstances(); - foreach (var startup in startUps) + try { - startup.ConfigureServices(services); + var startUps = assembly.GetInstances(); + foreach (var startup in startUps) + { + startup.ConfigureServices(services); + } + } + catch + { + // could not interrogate assembly - likely missing dependencies } } } diff --git a/Oqtane.Maui/Oqtane.Maui.csproj b/Oqtane.Maui/Oqtane.Maui.csproj index 54a5dc8a..45e07f6c 100644 --- a/Oqtane.Maui/Oqtane.Maui.csproj +++ b/Oqtane.Maui/Oqtane.Maui.csproj @@ -1,9 +1,9 @@ - net6.0-android;net6.0-ios;net6.0-maccatalyst $(TargetFrameworks);net6.0-windows10.0.19041.0 + Exe 3.4.1