C# 选择静态类定义

C# 选择静态类定义,c#,asp.net,C#,Asp.net,我在web.config中有3个部分为同一个静态类定义了值: <def_1 ... ... /> <def_2 ... ... /> <def_3 ... ... /> 我想动态地选择要使用的配置 <configSections> <section name="MyClass_1" type="myapp.def_1" /> <section name="MyClass_2" type="myapp.def_2" /

我在web.config中有3个部分为同一个静态类定义了值:

<def_1
...
...
/>
<def_2
...
...
/>
<def_3
...
...
/>

我想动态地选择要使用的配置

<configSections>
  <section name="MyClass_1" type="myapp.def_1" />
  <section name="MyClass_2" type="myapp.def_2" />
  <section name="MyClass_3" type="myapp.def_3" />
</configSections>

我希望能够根据需要使用MyClass_1、_2或_3。每个类都有Prod、QA和Dev环境的定义,我希望能够轻松地在环境之间切换。希望这不是太模糊。有人能想出一个简单的方法吗?目前,我们只是编辑web.config以使用我们想要的任何类,但我不想编辑它


此外,我想补充一点,这是我可以采取的唯一方法,因为我们有许多应用程序使用这一方法,只有一个小的修改是可以接受的,以促进他们的愿望。如果无法完成(我认为无法完成),那么这就是我给他们的答案。

您应该只有一个配置部分,但可以有3个不同的环境特定文件,并配置配置文件,以便在
设置中应用转换

一个像样的
.config
转换插件是SlowCheetah,请访问

下面是一个示例转换

<system.serviceModel>
    <bindings xdt:Transform="Replace">
        <basicHttpBinding>
            <binding name="myServiceReference">

            </binding>
        </basicHttpBinding>
    </bindings>
</system.serviceModel>

您应该只有一个配置部分,但可以有3个不同的环境特定文件,并配置配置文件,以便在
设置中应用转换

一个像样的
.config
转换插件是SlowCheetah,请访问

下面是一个示例转换

<system.serviceModel>
    <bindings xdt:Transform="Replace">
        <basicHttpBinding>
            <binding name="myServiceReference">

            </binding>
        </basicHttpBinding>
    </bindings>
</system.serviceModel>


这是我永远不会采取的方法。如果在同一个配置文件中对3个不同的环境进行参数化,除了易于维护外,您如何确定哪个配置在该环境中运行?请查看其他解决方案,如SlowCheetah,以更好地解决您的问题。@Liam我相信这个问题是有效的,因为它可以作为“为什么不这样做”的答案问题。@JonGlazer这是在开发期间还是在发布之前被替换的?这是我永远不会采取的方法。如果在同一个配置文件中对3个不同的环境进行参数化,除了易于维护外,您如何确定哪个配置在该环境中运行?请查看其他解决方案,如SlowCheetah,以更好地解决您的问题。@Liam我相信这个问题是有效的,因为它可以作为“为什么不这样做”的答案问题。@JonGlazer是在开发过程中还是在发布之前将其替换?我非常熟悉转换,我们确实实现了转换。但现在的新问题是我们是否可以改变环境。@JonGlazer你不必真正改变环境。这就是为什么我的问题,如果你在出版之前就这么做的话。可以对多个发布配置文件和每个配置文件集进行转换。因此,根据您发布的配置文件,将生成正确的.config(除非我误解了您)。如果解决方案配置正确,您可以。只需将解决方案配置为
DEV/TEST/PROD
或您需要的任何内容,而不是
DEBUG/RELEASE
我们希望能够在发布后以及在会话基础上切换环境。我认为“在会话基础上”将是一个与代码相关的问题,不是与配置相关的。我非常熟悉转换,我们确实实现了它们。但现在的新问题是我们是否可以改变环境。@JonGlazer你不必真正改变环境。这就是为什么我的问题,如果你在出版之前就这么做的话。可以对多个发布配置文件和每个配置文件集进行转换。因此,根据您发布的配置文件,将生成正确的.config(除非我误解了您)。如果解决方案配置正确,您可以。只需将解决方案配置为
DEV/TEST/PROD
或您需要的任何内容,而不是
DEBUG/RELEASE
我们希望能够在发布后和会话间切换环境。我认为“会话间切换”是与代码相关的问题,而不是与配置相关的问题。