Kri*_*rip 42 c# visual-studio-2005 application-settings
有没有办法从不同的项目访问设置文件?例如,我有一个包含2个项目的解决方案(让我们称之为Proj1和Proj2).我想从Proj1中的Program.cs访问Proj2的应用程序设置.这可能吗?
小智 53
如果您使用的是C#
答案:非常简单的答案是右键单击proj2,选择设置选项卡.在顶部,您会发现设置类的访问修饰符是:internal,将其更改为public.在proj1中添加对proj2的引用,以便查看proj2 Settings类.就这样.
Jay*_*Jay 34
选项A:从其他程序集的配置文件(存储设置的位置)中解析值
选项B:创建一个公共类,Proj2其中将必要的值从其设置中公开为静态属性,然后引用程序集Proj1并使用该类中的值.
选项C:如果你想揭露所有的设置,您可以修改设置类的从接入internal到public.
我确信还有其他方法.
我将重新发布@Kildareflare 链接的内容以供将来参考。在 VS2015 中仍然有效,但就我自己而言,我认为我更喜欢上面的“选项 B”。
\n\n访问另一个项目中的设置
\n\nVisual Studio 2005 最酷的新功能之一是新的属性编辑器。使用此属性编辑器,您可以轻松地将设置添加到您的应用程序中。但它的实现方式存在一个问题。让我解释一下原因。
\n\n通常这些设置特定于项目。当您在项目中添加设置时,与设置文件关联的特殊自定义工具会生成一个可用于访问它的新类。这个类的优点是它\xe2\x80\x99 是强类型的。但在幕后,它\xe2\x80\x99 只是从 xml 文件中获取密钥。该生成的类被设置为“内部密封”。这可以防止从任何其他程序集访问。如果您想集中编辑这些设置,该怎么办?
\n\n经过多次尝试揭露它后,我找到了一种快速简单的方法来做到这一点。让\xe2\x80\x99s 说我们的解决方案中有2 个项目:一个引擎和一个WinApp。每个都有设置,但我们希望它们可以从 WinApp 进行编辑。这是它的样子。
\n\n\n\n如果您想访问引擎设置,请使用以下技巧:添加链接文件。
\n\n\n\n链接文件将作为 WinApp 项目的一部分进行编译。设置类仍然是内部和密封的,但是是 WinApp 项目而不是 Engine。
\n\n这是最终结果:
\n\n\n\n请注意,我添加了一个与我的 Engine 项目同名的文件夹。如果您想从许多项目添加设置,这将很有帮助。
\n\n完成此操作后,您可以像从 WinApp 类一样从引擎类访问引擎设置。您可以从引擎类中省略 \xe2\x80\x9cEngine\xe2\x80\x9d 部分,因为您应该位于相同的命名空间中。它应该是这样的:
\n\nnamespace WinApp\n{\n public partial class Form1 : Form\n {\n public Form1()\n {\n InitializeComponent();\n }\n\n public void AccessConfig()\n {\n Engine.Properties.Settings.Default.EngineSetting = "test";\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
42545 次 |
| 最近记录: |