SORU
2 Mart 2009, PAZARTESİ


Uygulama içinde değişkenler./web config.config

Mümkün app.config web.config dosyalarında aşağıdaki gibi bir şey yapmak için?

<appSettings>
 <add key="MyBaseDir" value="C:\MyBase" />
 <add key="Dir1" value="[MyBaseDir]\Dir1"/>
 <add key="Dir2" value="[MyBaseDir]\Dir2"/>
</appSettings>

O zaman benim kodu Dir2 erişmek için sadece söyleyerek:

 ConfigurationManager.AppSettings["Dir2"]

Bu farklı sunucularda benim uygulamayı yüklerken bana yardımcı olacak ve yerleri app.configbenim bütün BİR girişi değiştirmek zorunda kalacak onda. (Kod tüm birleştirme idare edebilirim biliyorum, ama ben böylesini tercih ediyor).

CEVAP
2 Mart 2009, PAZARTESİ


Biraz daha karmaşık, ama çok daha esnek bir alternatif bir yapılandırma bölümü temsil eden bir sınıf oluşturmaktır. app.config / web.config dosyanızda, bu olabilir:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <!-- This section must be the first section within the <configuration> node -->
    <configSections>
        <section name="DirectoryInfo" type="MyProjectNamespace.DirectoryInfoConfigSection, MyProjectAssemblyName" />
    </configSections>

    <DirectoryInfo>
        <Directory MyBaseDir="C:\MyBase" Dir1="Dir1" Dir2="Dir2" />
    </DirectoryInfo>
</configuration>

Sonra, senin içinde .NET kod (C kullanırım# benim örnek), bu iki sınıf oluşturabilirsiniz

using System;
using System.Configuration;

namespace MyProjectNamespace {

    public class DirectoryInfoConfigSection : ConfigurationSection {

        [ConfigurationProperty("Directory")]
        public DirectoryConfigElement Directory {
            get {
                return (DirectoryConfigElement)base["Directory"];
            }
    }

    public class DirectoryConfigElement : ConfigurationElement {

        [ConfigurationProperty("MyBaseDir")]
        public String BaseDirectory {
            get {
                return (String)base["MyBaseDir"];
            }
        }

        [ConfigurationProperty("Dir1")]
        public String Dir1 {
            get {
                return (String)base["Dir1"];
            }
        }

        [ConfigurationProperty("Dir2")]
        public String Dir2 {
            get {
                return (String)base["Dir2"];
            }
        }
        // You can make custom properties to combine your directory names.
        public String Dir1Resolved {
            get {
                return System.IO.Path.Combine(MyBaseDir, Dir1);
            }
        }
    }
}

Son olarak, program kodu, bu şekilde app.config değişkenleri, yeni derslerin kullanarak erişebilirsiniz:

DirectoryInfoConfigSection config =
  (DirectoryInfoConfigSection)ConfigurationManager.GetSection("DirectoryInfo");
String dir1Path = config.Directory.Dir1Resolved;  // This value will equal "C:\MyBase\Dir1"

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FF Radio

    FF Radio

    16 Mayıs 2008
  • Snazzy Labs

    Snazzy Labs

    9 Aralık 2008
  • TROPFEST

    TROPFEST

    27 Mart 2007