/// <summary> /// Ensures this class is initialized. Initialization involves reflecting over properties and building /// a list of SettingsProperty's. /// </summary> private void EnsureInitialized() { // Initialization method - // be careful not to access properties here to prevent stack overflow. if (!_initialized) { _initialized = true; Type type = GetType(); if (_context == null) { _context = new SettingsContext(); } _context["GroupName"] = type.FullName; _context["SettingsKey"] = SettingsKey; _context["SettingsClassType"] = type; PropertyInfo[] properties = SettingsFilter(type.GetProperties(BindingFlags.Instance | BindingFlags.Public)); _classAttributes = type.GetCustomAttributes(false); if (_settings == null) { _settings = new SettingsPropertyCollection(); } if (_providers == null) { _providers = new SettingsProviderCollection(); } for (int i = 0; i < properties.Length; i++) { SettingsProperty sp = CreateSetting(properties[i]); if (sp != null) { _settings.Add(sp); if (sp.Provider != null && _providers[sp.Provider.Name] == null) { _providers.Add(sp.Provider); } } } } }
public void Initialize (string username, bool isAuthenticated) { _settingsContext = new SettingsContext (); _settingsContext.Add ("UserName", username); _settingsContext.Add ("IsAuthenticated", isAuthenticated); SettingsProviderCollection spc = new SettingsProviderCollection(); spc.Add (ProfileManager.Provider); base.Initialize (Context, ProfileBase.Properties, spc); }
public void ProviderCollectionAddDuplicate () { SettingsProviderCollection c = new SettingsProviderCollection (); c.Add (new MyProvider ()); c.Add (new MyProvider ()); }
public void ExceptionalGetPropertyValues () { SettingsPropertyCollection props = new SettingsPropertyCollection (); SettingsProviderCollection provs = new SettingsProviderCollection (); MyProvider3 p = new MyProvider3 (); MySettings s = new MySettings (); props.Add (new SettingsProperty ("Foo", typeof (string), p, false, 10, SettingsSerializeAs.String, null, true, true)); provs.Add (p); s.Initialize (new SettingsContext (), props, provs); Assert.AreEqual (0, s.Context.Count, "#0"); try { Assert.AreEqual (100, s.Foo, "#1"); Assert.Fail ("#2"); #if !TARGET_JVM } catch (Win32Exception) { #else } catch (CustomerException) { #endif } }
public void AddPropertyNoProviderButInProviders () { SettingsPropertyCollection props = new SettingsPropertyCollection (); SettingsProviderCollection provs = new SettingsProviderCollection (); MyProvider p = new MyProvider (); MySettings s = new MySettings (); props.Add (new SettingsProperty ("Foo", typeof (string), null, false, 10, SettingsSerializeAs.String, null, true, true)); provs.Add (p); s.Initialize (new SettingsContext (), props, provs); Assert.AreEqual (100, s.Foo); }
public void AddPropertyTypeMismatch () { SettingsPropertyCollection props = new SettingsPropertyCollection (); SettingsProviderCollection provs = new SettingsProviderCollection (); MyProvider p = new MyProvider (); MySettings s = new MySettings (); props.Add (new SettingsProperty ("Foo", typeof (string), p, false, 10, SettingsSerializeAs.String, null, true, true)); provs.Add (p); s.Initialize (new SettingsContext (), props, provs); int i = s.Foo; // it still works as int, regardless of the settings property type... }
public void PropertyValuesInitialized () { SettingsPropertyCollection props = new SettingsPropertyCollection (); SettingsProviderCollection provs = new SettingsProviderCollection (); MyProvider p = new MyProvider (); MySettings s = new MySettings (); int i; try { i = s.Foo; Assert.Fail ("#1-2"); } catch (SettingsPropertyNotFoundException) { } s.Initialize (new SettingsContext (), props, provs); Assert.AreEqual (0, s.PropertyValues.Count, "#2-1"); Assert.AreEqual (0, s.Context.Count, "#2-2"); props.Add (new SettingsProperty ("Foo", typeof (int), p, false, 10, SettingsSerializeAs.String, null, true, true)); // initialize w/o the provider s.Initialize (new SettingsContext (), props, provs); Assert.AreEqual (0, s.PropertyValues.Count, "#3-0"); Assert.AreEqual (100, s.Foo, "#3-1"); // ... !!! Assert.AreEqual (1, s.PropertyValues.Count, "#3-2"); SettingsPropertyValue v = s.PropertyValues ["Foo"]; Assert.AreEqual (100, v.PropertyValue, "#3-3"); Assert.AreEqual (0, s.Context.Count, "#3-4"); // initialize w/ the provider provs.Add (p); provs.Add (new MyProvider2 ("Bar", 25)); props.Add (new SettingsProperty ("Bar", typeof (int), provs ["MyProvider2"], false, 10, SettingsSerializeAs.String, null, true, true)); s.Initialize (new SettingsContext (), props, provs); Assert.AreEqual (1, s.PropertyValues.Count, "#4-1"); Assert.AreEqual (100, s.Foo, "#4-2"); Assert.AreEqual (25, s.Bar, "#4-3"); // ... !!! Assert.AreEqual (2, s.PropertyValues.Count, "#4-3-2"); Assert.AreEqual (0, s.Context.Count, "#4-4"); // wrong provider props.Remove ("Bar"); props.Add (new SettingsProperty ("Bar", typeof (int), provs ["MyProvider"], false, 10, SettingsSerializeAs.String, null, true, true)); s = new MySettings (); s.Initialize (new SettingsContext (), props, provs); Assert.AreEqual (0, s.PropertyValues.Count, "#5-1"); Assert.AreEqual (100, s.Foo, "#5-2"); Assert.AreEqual (10, s.Bar, "#5-3"); }
public void PropertyValuesInstance () { SettingsPropertyCollection props = new SettingsPropertyCollection (); SettingsProviderCollection provs = new SettingsProviderCollection (); MyProvider p = new MyProvider (); MySettings s = new MySettings (); props.Add (new SettingsProperty ("Foo", typeof (string), p, false, 10, SettingsSerializeAs.String, null, true, true)); provs.Add (p); s.Initialize (new SettingsContext (), props, provs); Assert.AreEqual (s.PropertyValues, s.PropertyValues); }