create your own settings in xml

筅森魡賤 提交于 2019-11-27 23:20:00

I usually use Settings - available via the project properties - Settings. These can be edited and saved in code, and I write a form / web page to edit them.

If you want to use the XML configuration, there's an attribute called file that reads external files. You could have a web.config file and a someothername.config file. The someothername.config would have settings like:

<appSettings>
    <add key="ConnString" value="my conn string" />
    <add key="MaxUsers" value="50" />
</appSettings>

And the web.config would have

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings file="ExternalWeb.config">
        <add key="MyKey" value="MyValue" />
    </appSettings>
</configuration>

See DevX for the example I stole.

balexandre

just to let you guys know that I did what configurator recommended but with a twist.

instead of asking all the time (that I need) for

System.Configuration.ConfigurationManager.AppSettings["myKey"];

I just created a static class that would pull this values with what we call by Strongly typed values (so you don't need to remember all the values)

the mySettings class

public static class mySettings
{
    public enum SettingsType
    { UserPermitions, WebService, Alerts }
    public enum SectionType
    { AllowChangeLayout, AllowUserDelete, MaximumReturnsFromSearch, MaximumOnBatch, SendTo }

    public static String GetSettings(SettingsType type, SectionType section)
    {
        return
            ConfigurationManager.AppSettings[
                String.Format("{0}_{1}",
                    Enum.Parse(typeof(SettingsType), type.ToString()).ToString(),
                    Enum.Parse(typeof(SectionType), section.ToString()).ToString())
            ];
    }
}

the web.config appSettings part

<configuration>
  <appSettings file="myApp.config">
    <add key="UserPermitions_AllowChangeLayout" value="" />
    <add key="UserPermitions_AllowUserDelete" value="" />    

    <add key="WebService_MaximumReturnsFromSearch" value="" /> 

    <add key="Alerts_SendTo" value="" />
    <add key="Alerts_MaximumOnBatch" value="" />
  </appSettings>
</configuration>

the entire myApp.config file

<?xml version="1.0" encoding="utf-8" ?>
<!--
###
### This file serves the propose of a quick configuration.
### Administrator can either change this values directly or use the 
###   Settings tab in the application.
###
-->
<appSettings>

  <!-- *** User Access Configuration *** -->
  <!-- Allow user to change the panels layout {1: Yes} {0: No} -->
  <add key="UserPermitions_AllowChangeLayout" value="1" />
  <!-- Allow user to delete a company fro monitoring -->
  <add key="UserPermitions_AllowUserDelete" value="1" />

  <!-- *** Web Service configuration *** -->
  <!-- Maximum responses from the search service -->
  <add key="WebService_MaximumReturnsFromSearch" value="10" />

  <!-- *** Allerts configuration *** -->
  <!-- Send the alerts to the email writeen below -->
  <add key="Alerts_SendTo" value="bruno.in.dk@gmail.com" />
  <!-- Send an alert when user import more than the number bellow -->
  <add key="Alerts_MaximumOnBatch" value="10" />

</appSettings>

So, now I call like this:

p.value = mySettings.GetSettings(
             mySettings.SettingsType.WebService, 
             mySettings.SectionType.MaximumReturnsFromSearch);

Hope that helps someone with the same problem :)

You may also put your configurations in a settings file. In your project, open Properties and go to Settings which looks like so

To access the values in your code, use Properties.Settings.YourSettingName;

Use Properties.Settings.Default.Reload(); to refresh your settings during runtime

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!