如何从另一个程序集访问ApplicationSettings部分?

5

我有一个被父程序集引用的dll。在父程序集的app.config的ApplicationSettings部分,我有一些设置可以通过正常的智能感知方式访问(例如Properties.Settings.Default.SMTPServer)。

如何从引用的dll中访问这些设置?显然,我无法像使用相同程序集那样使用智能感知!


很奇怪,我可以通过ConfigurationManager.AppSettings访问“.Net 1.0风格”的AppSettings部分...但我无法访问从另一个程序集获取设置的“.Net 2.0”方式。 - Calanus
2个回答

0

你是从两个程序集中都访问了那个值吗?

这个dll可以有自己的配置文件和应用程序设置。它最初是一个带有相应配置文件的dll,但是这些设置也可以移动到主应用程序中。

我使用的另一种方法是将该值分配给IoC,然后从IoC中读取该值(IoC == 控制反转库)。您也可以通过将该值分配给单例类来实现相同的效果。


我没有从两个程序集中访问该值。我希望执行程序集保存设置的原因是,引用的 DLL 被许多不同的应用程序使用/编译,但每个应用程序的设置都不同 - 因此不能在引用的 DLL 中定义设置。 - Calanus

0
你尝试过在DLL项目中保存.settings文件,然后使用它的[]运算符按名称访问属性吗?
例如,假设你的DLL有一个名为MySettings.settings的文件,里面没有特别的内容:

MySettings.Default["SomeSetting"];

(注意,我实际上还没有尝试过这个,但经过简单思考,似乎应该可以工作)。
我认为更好的解决方案是采用Chris的建议并使用单例或IOC机制,这样您就不必牺牲类型安全性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接