summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWonYoung Choi <wy80.choi@samsung.com>2017-03-30 14:07:25 +0900
committerKangho Hur <kangho.hur@samsung.com>2017-04-24 13:39:47 +0900
commitca347d384efee35ecafd8000374de4da13f36e64 (patch)
tree23ef81b2b6298d1126ad75ecae03ab884bacfc5d
parent78ba6f92455dabcba277ef871007f02a407c00a4 (diff)
downloadxamarin-forms-ca347d384efee35ecafd8000374de4da13f36e64.tar.gz
xamarin-forms-ca347d384efee35ecafd8000374de4da13f36e64.tar.bz2
xamarin-forms-ca347d384efee35ecafd8000374de4da13f36e64.zip
Register assemblies recursively
Change-Id: I76d2c053883d84fb603d0fd10aefcb6322f2d126
-rw-r--r--Xamarin.Forms.Platform.Tizen/Forms.cs19
-rw-r--r--Xamarin.Forms.Platform.Tizen/TizenPlatformServices.cs24
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);
+ }
+ }
}
}