diff options
-rw-r--r-- | Xamarin.Forms.Platform.Tizen/Forms.cs | 19 | ||||
-rw-r--r-- | Xamarin.Forms.Platform.Tizen/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<Assembly>(); // 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); + } + } } } |