I'm looking for a way to get the current app's assemblies inside a portable library project.
In classic library project, the code line below do the job:
var assemblies = System.AppDomain.CurrentDomain.GetAssemblies();
But seems that System.AppDomain is not available to portable library.
Does anyone know a way to get the current domain assemblies on portable library?
You can use platform hooks:
In your portable library:
using System.Collections.Generic;
namespace PCL {
public interface IAppDomain {
IList<IAssembly> GetAssemblies();
}
public interface IAssembly {
string GetName();
}
public class AppDomainWrapper {
public static IAppDomain Instance { get; set; }
}
}
and you can access them (in your portable library) like:
AppDomainWrapper.Instance.GetAssemblies();
In your platform-dependent application you'll need to implement it:
public class AppDomainWrapperInstance : IAppDomain {
IList<IAssembly> GetAssemblies() {
var result = new List<IAssembly>();
foreach (var assembly in System.AppDomain.CurrentDomain.GetAssemblies()) {
result.Add(new AssemblyWrapper(assembly));
}
return result;
}
}
public class AssemblyWrapper : IAssembly {
private Assembly m_Assembly;
public AssemblyWrapper(Assembly assembly) {
m_Assembly = assembly;
}
public string GetName() {
return m_Assembly.GetName().ToString();
}
}
and bootstrap it
AppDomainWrapper.Instance = new AppDomainWrapperInstance();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With