Register assemblies recursively
authorWonYoung Choi <wy80.choi@samsung.com>
Thu, 30 Mar 2017 05:07:25 +0000 (14:07 +0900)
committerKangho Hur <kangho.hur@samsung.com>
Mon, 24 Apr 2017 04:39:47 +0000 (13:39 +0900)
Change-Id: I76d2c053883d84fb603d0fd10aefcb6322f2d126

Xamarin.Forms.Platform.Tizen/Forms.cs
Xamarin.Forms.Platform.Tizen/TizenPlatformServices.cs

index 177b8c5..7657118 100644 (file)
@@ -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)
index a34c2fa..7b07a31 100644 (file)
@@ -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);
+                                               }
+                                       }
                                }
                        }