我不建议尝试合并配置——它可能会变得混乱。
相反,我会配置您的子模块来配置和使用对您需要的适当企业库对象的私有引用。
我假设您的模块是一个具有 app.config 的类库。编译后,它会在输出目录中生成一个 module.dll.config 文件。举一个使用 Enterprise Library 6 进行日志记录的示例,我将创建一个帮助程序类来加载您自己的配置并维护对您模块的 LogWriter 的引用。通过这种方式,您的模块会加载自己的配置,并且不会干扰应用程序中的其他配置,也不会对其产生影响。
namespace MyModule
{
public class MyModuleClass
{
public void DoSomething()
{
MyModuleLogger.LogWriter.Write("MyModule Test", "General");
}
}
public static class MyModuleLogger
{
private static Lazy<LogWriter> logWriter = new Lazy<LogWriter>(() =>
{
FileConfigurationSource configSource =
new FileConfigurationSource("MyModule.dll.config");
LogWriterFactory factory = new LogWriterFactory(configSource);
return factory.Create();
});
public static LogWriter LogWriter
{
get { return logWriter.Value; }
}
}
}
我使用了一个静态类,但您可以使用各种可能适合您的设计的方法(单例、工厂等)
您必须确保您的 dll.config 文件与您的程序集一起部署。如果企业库存在版本问题,您也可能会遇到问题(例如,您使用的是版本 6,而应用程序使用的是版本 5。)