سؤال

في خدمة صافي 3.5 (ويندوز)، وأود أن تخزين مجموعة صغيرة من القيم في ملف التكوين. في الأساس، ولست بحاجة للسماح المسؤولين لإضافة وإزالة القيم من هذه المجموعة الصغيرة. ما الذي أحتاجه لإضافتها إلى ملف التكوين لتخزين مجموعة من القيم الصغيرة، وكيف يمكنني قراءة المجموعة في C #؟

لتوضيح، وجمع وأنا تبحث عن البيانات مثل هذا:

<Illegal Characters>
  <CustomCollection value="?"/>
  <CustomCollection value="#"/>
  <CustomCollection value=","/>
</Illegal Characters>
هل كانت مفيدة؟

المحلول

وهناك مادة جيدة على خلق معالج مقطع تكوين مخصص الذي يحمل القيم كقائمة <لأ href = "http://www.dotneat.net/2007/10/16/StoringACollectionOnYourAppconfigUsingSectionHandlers.aspx" يختلط = "نوفولو noreferrer "> هنا .

وأساسا IConfigurationSectionHandler الخاص بك الأسلوب إنشاء ينبغي أن ننظر بشيء من هذا القبيل:

public object Create(object parent, object configContext, XmlNode section)
{
    IList<string> illegal = new List<string>();
    XmlNodeList processesNodes= section.SelectNodes("CustomCollection");

    foreach (XmlNode child in processesNodes)
    {
        illegal.Add(child.Attributes["value"].InnerText);
    }
    return illegal;
}

نصائح أخرى

وكبديل لذلك، يمكن أن تقوم بتخزين سلسلة واحدة من أحرف غير قانونية كتعبير عادي في ملف التكوين الخاص بك. وبهذه الطريقة لم يكن لديك لتكرار خلال الأحرف للتحقق لهم المستخدمة في سلسلة معينة - هل يمكن أن تفعل مقارنة على أساس التعبير المعتاد. قد حفظ قليلا من وحدة المعالجة المركزية والتعقيد.

وبطبيعة الحال، فإنه من السهل أن استخدام العقد XML الفردية إذا مدراء تسير لتحرير الملف مباشرة. ولكن لو انهم تغيير قائمة الطابع عبر التطبيق نفسه، باستخدام التعابير المنطقية قد تكون جيدة.

وإذا كان عدد القيم صغير وثابت أسماء المرتبطة بها، يجب أن تكون قادرا على تخزينها في قسم التكوين appSettings والرجوع إليها باستخدام في ConfigurationManager جمع .AppSettings. هذا وسوف تعمل بشكل جيد جدا للأزواج قيمة المفتاح القياسية. إذا كانت البيانات الخاص بك هو أكثر تعقيدا من ذلك، قد ترغب في تحديد فرعكم التكوين الخاصة والمرتبطة <لأ href = "http://msdn.microsoft.com/en-us/library/system.configuration.iconfigurationsectionhandler.aspx" يختلط = "نوفولو noreferrer"> ConfigurationSectionHandler للتحليل البيانات في كل ما الكائن المخصص الذي تريد. عليك ربما أيضا تريد تطبيق FileSystemWatcher للكشف عن تغييرات على ملف التكوين واستكمال التكوين من التطبيق قيد التشغيل إلا إذا كان مقبولا لبدء / إيقاف الخدمة من أجل الحصول على التكوين الجديد المطبق.

وأنا أصف الطريق في VB.NET، لأنني متأكد من أن C # طريقة هي مشابهة جدا أو نفس في بعض الحالات. فتح ملف settings.settings تحت مشروعي في مستكشف الحلول. إضافة في الإعدادات التي تريدها، على سبيل المثال "OutputPath". ثم، في التعليمة البرمجية، مرجع له مع

variable = My.Settings.OutputPath

' If a user modifiable setting, you can use:
My.Settings.OutputPath = variable
My.Settings.Save()
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top