我正在寻找一种在可移植库项目中获取当前应用程序集的方法。
在经典库项目中,下面的代码行完成了这项工作:
var assemblies = System.AppDomain.CurrentDomain.GetAssemblies();
但似乎 System.AppDomain 不适用于可移植库。
有谁知道在便携式库上获取当前域程序集的方法?
我正在寻找一种在可移植库项目中获取当前应用程序集的方法。
在经典库项目中,下面的代码行完成了这项工作:
var assemblies = System.AppDomain.CurrentDomain.GetAssemblies();
但似乎 System.AppDomain 不适用于可移植库。
有谁知道在便携式库上获取当前域程序集的方法?
您可以使用平台挂钩:
在您的便携式库中:
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; }
}
}
您可以访问它们(在您的便携式库中),例如:
AppDomainWrapper.Instance.GetAssemblies();
在您的平台相关应用程序中,您需要实现它:
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();
}
}
并引导它
AppDomainWrapper.Instance = new AppDomainWrapperInstance();