C# 验证App.Config中的值

C# 验证App.Config中的值,c#,configuration,app-config,C#,Configuration,App Config,只是一个简单的问题,想知道正确的方法 在Appsettings的appConfig中,我想验证我输入的值 <appSettings> <add key="UseEncryption" value="false"/> <add key="MaxThreshold" value="10"/> <add key="ProcessDate" value="01/12/2012"/> </appSettings>

只是一个简单的问题,想知道正确的方法

在Appsettings的appConfig中,我想验证我输入的值

<appSettings>
    <add key="UseEncryption" value="false"/>
    <add key="MaxThreshold" value="10"/>
    <add key="ProcessDate" value="01/12/2012"/>
</appSettings>  

程序按正常方式编译和执行。但是,支持团队可以更改这些值并重新运行应用程序。在编码一个Gui来改变所有这些值,并验证他们的方式在。。。是否有其他方法来验证它们

例如,我想检查MaxThrehold是否为Int,Processdate是否为有效日期等

我正在编写一个函数,该函数将在应用程序开始时运行,该函数将检查每个设置,如果设置不正确,则停止应用程序

这是最好的办法吗。。为每个应用程序设置提供验证程序类型功能

我保留了一个名为CurrentEnvironment的类,在这里我有应用程序配置中需要的所有设置的get/set。。因此,对于每个键,我还有一个validitor函数来检查值

问候

我正在编写一个函数,该函数将在应用程序开始时运行,该函数将检查每个设置,如果设置不正确,则停止应用程序

这是一种很好的方法,尽管您确实需要确保此函数在执行开始时运行

另一种方法是创建自定义配置节(从中继承并添加自定义属性)——确保这些属性属于要测试的类型。当配置文件反序列化时,如果无法正确解析类型,则应用程序将不会启动

我正在编写一个函数,该函数将在应用程序开始时运行,该函数将检查每个设置,如果设置不正确,则停止应用程序

这是一种很好的方法,尽管您确实需要确保此函数在执行开始时运行


另一种方法是创建自定义配置节(从中继承并添加自定义属性)——确保这些属性属于要测试的类型。当配置文件反序列化时,如果无法正确解析类型,应用程序将不会启动。

对于每个键,请在对象上使用TryParse


DateTime.TryParse(appsetting[keyname])

对于每个键,在对象上使用TryParse


DateTime.TryParse(appsetting[keyname])

您还可以构建
.xsd
模式,描述您确切期望的内容,然后使用命令行
xsd
实用程序生成一个类。然后将配置移动到独立的XML文件,并尝试将其序列化为上述自动生成的类。当出现问题时,您将得到一个可以处理的异常。要做的工作更多,但灵活性更大,包括复杂类型的选项。很好的Soloution阴影,但是时间不在我这边:-)我在使用自定义配置,这让我想到appSettings,因为用户可以在其中输入他们喜欢的内容。您还可以构建
.xsd
模式,描述您确切期望的内容,然后使用命令行
xsd
实用程序生成一个类。然后将配置移动到独立的XML文件,并尝试将其序列化为上述自动生成的类。当出现问题时,您将得到一个可以处理的异常。还有更多的工作要做,但灵活性更大,包括复杂类型的选项。很好的Soloution Shadow,但时间不在我这边:-)我在使用自定义配置,这让我想到了appSettings,因为用户可以在其中输入他们喜欢的内容。嗨Oded,是的,信不信由你,我的应用程序使用了自定义配置,它工作得很好,这就是为什么它让我想知道为什么没有某种形式的验证AppSettings@Doiremik-使用
appSettings
时,这些都只是字符串。它就是这样设计的。否则它不是强类型的。谢谢Oded。。所以我采用了这种方法,在我的CurrentEnvironment类中,我为AppSettings中的每个设置都有一个getter方法和一个验证器。然后,我有一个函数调用所有验证器并生成一个错误消息字符串。如果字符串为空,则一切正常,否则显示错误,程序停止。使用反射或其他方法查找类中的所有验证器方法并逐个调用它们可能很酷。。但我还没有真正深入思考。再次感谢DHi Oded,是的,信不信由你,我的应用程序使用了自定义配置,而且运行良好,这就是为什么它让我想知道,为什么没有在服务器上进行某种验证AppSettings@Doiremik-使用
appSettings
时,这些都只是字符串。它就是这样设计的。否则它不是强类型的。谢谢Oded。。所以我采用了这种方法,在我的CurrentEnvironment类中,我为AppSettings中的每个设置都有一个getter方法和一个验证器。然后,我有一个函数调用所有验证器并生成一个错误消息字符串。如果字符串为空,则一切正常,否则显示错误,程序停止。使用反射或其他方法查找类中的所有验证器方法并逐个调用它们可能很酷。。但我还没有真正深入思考。再次感谢马库斯。。这就是我的验证器函数的作用,它返回一个错误字符串,因为存在验证问题。我有一个主要方法,它调用所有的验证器并将错误消息串在一起Yes Marcus。。这就是我的验证器函数的作用,它返回一个错误字符串,因为存在验证问题。我有一个主要方法,它调用所有验证器并将错误消息串在一起