0

我正在开发一个 C# 类库项目。该项目引用了其他 DLL 文件,例如 log4net.dll。在这个项目中,我只有一个使用 log4net.dll 的类。当其他项目引用我的项目时,只有当其他项目正在调用使用 log4net.dll 的类时,我才想将 log4net.dll 复制到它的 bin 文件夹中。

这可行吗?

4

1 回答 1

0

将您的库一分为二并从主库中删除 log4net.dll 的引用,并且仅当您需要与需要 log4net.dll 的部分相关联的东西时才引用第二个库。

处理这种情况的好方法是依赖注入——看看企业库(统一容器)——尽管这会给你一个额外的 dll :)

使用统一容器:

您将拥有带有 ILog4NetUsingInterface 的 Library1

在 Library2 中,您将拥有类 Log4NetUsingClass : ILog4NetUsingInterface

在 Library2 中,您将拥有将 Log4NetUsingClass 注册为 ILog4NetUsingInterface 的实现的引导程序

public static class Bootstrapper {
    public static void Init() {
      ServiceLocator.IoC.RegisterSingleton<ILog4NetUsingInterface, Log4NetUsingClass>();
    }
}

只有在需要使用 Log4NetUsingClass 时才会调用此 Init 方法

在其他所有图书馆中,您都可以调用

ServiceLocator.IoC.Retrieve<ILog4NetUsingInterface>()

(如果你不调用引导程序,它会给你运行时错误。)

于 2013-06-20T14:48:42.910 回答