تحتاج إلى خلق دينامية ConfigurationSection الذي يحمل أيضا نوع

StackOverflow https://stackoverflow.com/questions/125470

سؤال

أنا بحاجة إلى إنشاء قسم التكوين, التي هي قادرة على تخزين أزواج قيمة المفتاح في التطبيق.config و أزواج قيمة المفتاح يمكن إضافة وقت بغض النظر عن النوع.من المهم أيضا أن قيمة يحتفظ النوع الأصلي.أحتاج إلى تمديد واجهة التالية

public interface IPreferencesBackend
{
    bool TryGet<T>(string key, out T value);
    bool TrySet<T>(string key, T value); 
}

في وقت التشغيل ، أستطيع أن أقول شيئا مثل:

My.Foo.Data data = new My.Foo.Data("blabla");
Pref pref = new Preferences();
pref.TrySet("foo.data", data); 
pref.Save();

My.Foo.Data date = new My.Foo.Data();
pref.TryGet("foo.data", out data);

حاولت مع النظام.التكوين.التكوين.AppSettings ، ولكن المشكلة مع ذلك هو تخزين أزواج قيمة المفتاح في صفيف سلسلة.

ما أريده هو أن يكون هناك تنفيذ النظام.التكوين.ConfigurationSection ، حيث يمكن التحكم في كيفية إعداد الفرد هو تسلسل.لاحظت أن الإعدادات التي تم إنشاؤها بواسطة Visual Studio نوع من فعل هذا.فمن باستخدام انعكاس خلق كل وضع مفاتيح.ما أريده هو أن تفعل هذا وقت التشغيل بشكل حيوي.

[System.Configuration.UserScopedSettingAttribute()]
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.Configuration.DefaultSettingValueAttribute("2008-09-24")]
public global::System.DateTime DateTime {
   get {
        return ((global::System.DateTime)(this["DateTime"]));
       }
   set {
        this["DateTime"] = value;
       }
 }
هل كانت مفيدة؟

المحلول 2

لقد وجدت اثنين من المواد كبيرة على codeproject.com أن يتم شرح هذه المسائل بالتفصيل.

كشف أسرار .NET 2.0 http://www.codeproject.com/KB/dotnet/mysteriesofconfiguration.aspx

إعدادات المستخدم التطبيقية http://www.codeproject.com/KB/dotnet/user_settings.aspx?display=PrintAll&fid=1286606&df=90&mpp=25&noise=3&sort=Position&view=Quick&select=2647446&fr=26

نصائح أخرى

فيل Haack كبيرة على المادة خلق تكوين مخصص أقسام

هذا كل ما تحصل عليه في ملف نصي ASCII - السلاسل.:-)

ومع ذلك ، يمكنك ترميز "قيمة" سلاسل تشمل نوع المعلمة مثل:

<key="myParam" value="type, value" />

على سبيل المثال:

<key="payRate" value="money,85.79"/>

ثم يكون التطبيق الخاص بك التحويل ...

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top