[c#] قراءة الإعدادات من app.config أو web.config في .net



Answers

للحصول على عينة App.config مثل أدناه:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="countoffiles" value="7" />
    <add key="logfilelocation" value="abc.txt" />
  </appSettings>
</configuration>

تقرأ إعدادات التطبيق المذكورة أعلاه باستخدام الكود المعروض أدناه:

using System.Configuration;

قد تحتاج أيضًا إلى إضافة مرجع إلى System.Configuration في مشروعك إذا لم يكن هناك واحد بالفعل. يمكنك بعد ذلك الوصول إلى القيم مثل:

string configvalue1 = ConfigurationManager.AppSettings["countoffiles"];
string configvalue2 = ConfigurationManager.AppSettings["logfilelocation"];

أتمنى أن يساعدك هذا!

Question

أعمل على مكتبة فئة C # تحتاج إلى قراءة الإعدادات من ملف web.config أو app.config (اعتمادًا على ما إذا كان يتم الرجوع إلى DLL من تطبيق ويب ASP.NET أو تطبيق Windows Forms).

لقد وجدت ذلك

ConfigurationSettings.AppSettings.Get("MySetting")

يعمل ، لكن تم وضع علامة على هذا الرمز على أنه تم إيقافه بواسطة Microsoft.

قرأت أنني يجب أن أستخدم:

ConfigurationManager.AppSettings["MySetting"]

ومع ذلك ، لا يبدو فئة System.Configuration.ConfigurationManager متوفرة من مشروع مكتبة Class C #.

هل يعرف أحد ما أفضل طريقة للقيام بذلك؟




كما وجدت أفضل نهج للوصول إلى متغيرات إعدادات التطبيق بطريقة منهجية عن طريق جعل فئة المجمع على System.Configuration على النحو التالي

public class BaseConfiguration
    {
        protected static object GetAppSetting(Type expectedType, string key)
        {
            string value = ConfigurationManager.AppSettings.Get(key);
            try
            {
                if (expectedType == typeof(int))
                    return int.Parse(value);
                if (expectedType == typeof(string))
                    return value;

                throw new Exception("Type not supported.");
            }
            catch (Exception ex)
            {
                throw new Exception(string.Format("Config key:{0} was expected to be of type {1} but was not.",
                    key, expectedType), ex);
            }
        }
    }

الآن يمكننا الوصول إلى متغيرات الإعدادات المطلوبة بأسماء مشفرة باستخدام فئة أخرى على النحو التالي

public class ConfigurationSettings:BaseConfiguration
    {
        #region App setting

        public static string ApplicationName
        {
            get { return (string)GetAppSetting(typeof(string), "ApplicationName"); }
        }

        public static string MailBccAddress
        {
            get { return (string)GetAppSetting(typeof(string), "MailBccAddress"); }
        }

        public static string DefaultConnection
        {
            get { return (string)GetAppSetting(typeof(string), "DefaultConnection"); }
        }

        #endregion App setting

        #region global setting



        #endregion global setting
    }



جرب هذا:

string keyvalue=System.Configuration.ConfigurationManager.AppSettings["keyname"];

في web.config يجب أن يكون الهيكل التالي:

<configuration>
<appSettings>
<add key="keyname" value="keyvalue" />
</appSettings>
</configuration>



أنصحك بشدة بإنشاء التفاف لهذه المكالمة. شيء مثل ConfigurationReaderService واستخدام حق التبعية للحصول على هذه الفئة. بهذه الطريقة ستتمكن من عزل ملفات التكوين هذه لأغراض الاختبار.

لذا استخدم ConfigurationManager.AppSettings["something"]; اقترح وإرجاع هذه القيمة. يمكنك باستخدام هذا الأسلوب إنشاء نوع من الإرجاع الافتراضي إذا لم يكن هناك مفتاح متوفر في ملف .config.




حل آخر ممكن:

var MyReader = new System.Configuration.AppSettingsReader();
string keyvalue = MyReader.GetValue("keyalue",typeof(string)).ToString();



يجب إضافة إلى المشروع مرجع إلى تجميع System.Configuration.




اقرأ من التكوين:

ستحتاج إلى إضافة مرجع إلى التهيئة

  1. افتح "خصائص" في مشروعك
  2. انتقل إلى علامة التبويب "الإعدادات"
  3. إضافة "الاسم" و "القيمة"
  4. الحصول على القيمة باستخدام التعليمات البرمجية التالية:

    قيمة السلسلة = Properties.Settings.Default.keyname؛

حفظ في التهيئة:

   Properties.Settings.Default.keyName = value;
   Properties.Settings.Default.Save();



انقر بزر الماوس الأيمن على مكتبة الفصل ، واختر خيار "إضافة المراجع" من القائمة ؛ وأخيرًا من علامة التبويب .NET ، حدد System.Configuration. يتضمن ذلك System.Configuration dll في المشروع الخاص بك.




دائمًا ما أقوم بإنشاء واجهة IConfig ذات خصائص typesafe تم التصريح بها لكافة قيم التكوين. فئة تطبيق تكوين ثم wrappers المكالمات إلى System.Configuration. أصبحت جميع مكالمات System.Configuration الخاصة بك الآن في مكان واحد أكثر سهولة ونظافةً للحفاظ على وتتبع الحقول التي يتم استخدامها والإعلان عن قيمها الافتراضية. أكتب مجموعة من طرق المساعدة الخاصة لقراءة وتحليل أنواع البيانات الشائعة.

باستخدام إطار عمل IoC ، يمكنك الوصول إلى حقول IConfig في أي مكان من التطبيق الخاص بك بمجرد تمرير الواجهة إلى منشئ الفصل. يمكنك أيضًا إنشاء تطبيقات وهمية لواجهة IConfig في اختبارات الوحدة الخاصة بك بحيث يمكنك الآن اختبار قيم التكوين المختلفة ومجموعات القيم دون الحاجة إلى لمس ملف App.config أو Web.config.




Links