gpt4 book ai didi

c# - 可移植库上是否有替代 AppDomain.GetAssemblies 的方法?

转载 作者:可可西里 更新时间:2023-11-01 09:11:54 26 4
gpt4 key购买 nike

我正在寻找一种将当前应用程序的程序集放入可移植库项目中的方法。

在经典库项目中,下面的代码行完成了这项工作:

var assemblies = System.AppDomain.CurrentDomain.GetAssemblies();

但似乎 System.AppDomain 不可用于可移植库。

有谁知道在可移植库上获取当前域程序集的方法吗?

最佳答案

您可以使用平台 Hook :

在您的可移植图书馆中:

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();

关于c# - 可移植库上是否有替代 AppDomain.GetAssemblies 的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16898871/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com