From 2b763c44fdfa89b8f8f28f3d5e37682d6ead0430 Mon Sep 17 00:00:00 2001 From: WonYoung Choi Date: Thu, 30 Mar 2017 14:07:25 +0900 Subject: Register assemblies recursively Change-Id: I76d2c053883d84fb603d0fd10aefcb6322f2d126 --- Xamarin.Forms.Platform.Tizen/Forms.cs | 19 ++--------------- .../TizenPlatformServices.cs | 24 ++++++++++++++++++---- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/Xamarin.Forms.Platform.Tizen/Forms.cs b/Xamarin.Forms.Platform.Tizen/Forms.cs index 177b8c55..76571189 100644 --- a/Xamarin.Forms.Platform.Tizen/Forms.cs +++ b/Xamarin.Forms.Platform.Tizen/Forms.cs @@ -159,23 +159,8 @@ namespace Xamarin.Forms.Platform.Tizen // In .NETCore, AppDomain feature is not supported. // The list of assemblies returned by AppDomain.GetAssemblies() method should be registered manually. // The assembly of the executing application and referenced assemblies of it are added into the list here. - Assembly asm = application.GetType().GetTypeInfo().Assembly; - TizenPlatformServices.AppDomain.CurrentDomain.RegisterAssembly(asm); - foreach (var refName in asm.GetReferencedAssemblies()) - { - if (!refName.Name.StartsWith("System.") && !refName.Name.StartsWith("Microsoft.")) - { - try - { - Assembly refAsm = Assembly.Load(refName); - TizenPlatformServices.AppDomain.CurrentDomain.RegisterAssembly(refAsm); - } - catch - { - Log.Warn("Reference Assembly can not be loaded. {0}", refName.FullName); - } - } - } + // TODO: AppDomain is comming back in NETStandard2.0. This logic should be changed at that time. + TizenPlatformServices.AppDomain.CurrentDomain.RegisterAssemblyRecursively(application.GetType().GetTypeInfo().Assembly); Device.PlatformServices = new TizenPlatformServices(); ; if (Device.info != null) diff --git a/Xamarin.Forms.Platform.Tizen/TizenPlatformServices.cs b/Xamarin.Forms.Platform.Tizen/TizenPlatformServices.cs index a34c2faa..7b07a31a 100644 --- a/Xamarin.Forms.Platform.Tizen/TizenPlatformServices.cs +++ b/Xamarin.Forms.Platform.Tizen/TizenPlatformServices.cs @@ -183,14 +183,30 @@ namespace Xamarin.Forms.Platform.Tizen _assemblies = new List(); // Add this renderer assembly to the list - RegisterAssembly(GetType().GetTypeInfo().Assembly); + _assemblies.Add(GetType().GetTypeInfo().Assembly); } - internal void RegisterAssembly(Assembly asm) + internal void RegisterAssemblyRecursively(Assembly asm) { - if (!_assemblies.Contains(asm)) + if (_assemblies.Contains(asm)) + return; + + _assemblies.Add(asm); + + foreach (var refName in asm.GetReferencedAssemblies()) { - _assemblies.Add(asm); + if (!refName.Name.StartsWith("System.") && !refName.Name.StartsWith("Microsoft.") && !refName.Name.StartsWith("mscorlib")) + { + try + { + Assembly refAsm = Assembly.Load(refName); + RegisterAssemblyRecursively(refAsm); + } + catch + { + Log.Warn("Reference Assembly can not be loaded. {0}", refName.FullName); + } + } } } -- cgit v1.2.3