如果这是重复的道歉,但我没有设法直接询问这个问题。
这里的一般意见(那是我和他对面的)是他们不应该,原因是DLL可以共享;因此,在DLL中使用特定于应用程序的信息的想法是无稽之谈。如果信息不是特定于应用程序的,则可以使用常量。
另一个问题是,假设DLL没有自己的配置文件,DLL是否应该使用加载DLL的可执行文件的配置文件,或者作为某种构造函数的一部分传递相关数据。我们这里的观点是后者,因为它使它更容易测试,缺点是有时需要将大量数据传递给dll。
评论
答案 0 :(得分:1)
在“使用配置文件进行简单配置”和“可测试”方面,没有理由不能兼顾两个方面的优势。有一个静态方法可以从配置文件创建实例,但也提供了一个构造函数,以实现更多的控制和可测试性。静态方法只需获取设置并调用构造函数。
我相信可以像任何其他项目一样为DLL创建设置类,然后你只需要将实际文本放入应用程序的配置文件而不是DLL中。基本上忽略为库项目生成的app.config,除了用作应用程序中心模板的模板。
或者,使用类似Spring.NET的东西来管理这类事情:)
答案 1 :(得分:0)
通常,我猜您应该将相关信息传递给您正在调用的函数,或者在您创建的DLL中定义的对象中设置相关属性。我想这就是为什么.NET并不真正支持DLL的配置文件(你可以创建它们,但它们在运行时不会被使用)。
我有一个场景,其中DLL正在读取配置文件,但这非常特殊:.NET DLL将对象导出为COM对象以供Microsoft Navision使用。它使用XML-RPC接口与保理银行进行通信。
虽然DLL安装在每个用户的计算机上,但该接口的配置对所有用户都是通用的,因此我在每台PC上映射的网络驱动器上配置了配置(URL,凭据等)从该公共文件中读取。
这是一个好的做法取决于读者,但在那种场景中有一个共同的配置文件才有意义......