public static SnapShot GetFor(Assembly assembly) { Type settingsT = assembly.GetSettingsType(); if (settingsT == null) return new SnapShot(); else return GetFor(settingsT.FullName); }
/// <summary> /// builds a patch from the defaults as defined in the assembly<br/> /// Returns an empty patch for assemblies that don't use settings or /// are not using the settings provider /// </summary> /// <param name="assembly"></param> /// <returns></returns> public static SnapShot BuildFrom(Assembly assembly) { SnapShot ret = new SnapShot(); ret.Assembly = assembly.FullName; Type settingsT = assembly.GetSettingsType(); if (settingsT == null) throw new ArgumentException("Assembly does not support the SharePoint Primitves Settings Provider."); ret.Section = settingsT.FullName; var settings = settingsT.GetProperties().Where(p => p.HasCustomAttribute<ApplicationScopedSettingAttribute>(true)); foreach (var setting in settings) { if (setting.IsConnectionString()) ret.ConnectionStrings.Add(settingsT.FullName + "." + setting.Name, setting.DefaultValue()); else ret.Settings.Add(setting.Name, setting.DefaultValue()); } return ret; }