0

在我们的 C# 项目中,我遇到了一种情况,我希望在配置文件中有类似“配置上下文”的东西。

我的意思是:

我想要这样的功能(想象中的例子)

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

    <ConfigurationContext name="Context1">
        <connectionStrings>
            <add name="AppConnStr" connectionString="..." providerName="..."/>
        </connectionStrings>
        <AppSettings>
            <add key="name" value="Config 1 Test!"/>
        </AppSettings>
    </ConfigurationContext>

    <ConfigurationContext name="Context2">
        <connectionStrings>
            <add name="AppConnStr" connectionString="..." providerName="..."/>
        </connectionStrings>
        <AppSettings>
            <add key="name" value="Config 2 Test!"/>
        </AppSettings>
    </ConfigurationContext>

</configuration>

然后我可以像这样使用它

var context1 = ConfigurationManager.GetContext("Context1");
var conn = new SqlConnection(context1.ConnectionStrings["AppConnStr"].ConnectionString);

这意味着每个“上下文”就像它自己的 app.config 一样(带有部分、部分组等)......

现在我要做的是加载两个不同的应用程序域,每个域都有自己的配置文件。原因是因为项目的几乎所有设置都是通过公共静态属性暴露给代码的。为了避免从静态属性到实例属性的大量重构,我不得不选择多应用程序域解决方案。

现在我有时间去做,我想重构代码以使用 Context 对象,这些对象将实现将配置设置公开为实例属性的接口,并摆脱应用程序的加载、卸载和卷影复制域...

有没有办法在 .NET 框架中实现这样的功能?

4

0 回答 0