我有一个单线程应用程序,它使用以下代码在运行时加载多个程序集:
objDLL = Assembly.LoadFrom(strDLLs[i]);
我希望以这种方式加载的程序集使用与其余程序集相同的 log4net.ILog 引用。但是看起来运行时加载的程序集有一个完全不同的引用并且需要它们自己的配置。有谁知道单个 log4net.ILog 是否可以跨使用 .NET 接口(interface)在运行时加载的程序集使用?
这是 Program 类中的 log4net.ILog 创建和支持代码:
// Configure log4net using the .config file
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
public static class Program
{
private static log4net.ILog m_Log = null;
[STAThread]
public static void Main(string[] args)
{
try
{
m_Log = log4net.LogManager.GetLogger(
MethodBase.GetCurrentMethod().DeclaringType);
}
}
}
最佳答案
如果您的所有程序集都实现了一个公共(public)接口(interface),那么您可以拥有一个属性或构造函数参数,允许您将 ILog 的本地实例传递给动态加载的程序集。
关于c# - 如何在运行时加载的程序集中使用公共(public) log4net 引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/136172/