private Dictionary <string, IEnumerable <string> > BuildConfigGroups() { Dictionary <string, IEnumerable <string> > groups = new Dictionary <string, IEnumerable <string> >(); foreach (PropertyInfo propertyInfo in GetType().GetProperties(BindingFlags.Instance | BindingFlags.NonPublic)) { ConfigFileGroup groupAttribute = propertyInfo.GetCustomAttribute <ConfigFileGroup>(); if (groupAttribute != null) { groups.Add(groupAttribute.Name, (IEnumerable <string>)propertyInfo.GetValue(this)); } } return(groups); }
private Dictionary <string, IEnumerable <string> > BuildConfigGroups() { if (_configGroups.Count == 0) { lock (_configGroups) { if (_configGroups.Count == 0) { PropertyInfo[] propertyInfos = GetType().GetProperties(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy); foreach (PropertyInfo propertyInfo in propertyInfos) { ConfigFileGroup groupAttribute = propertyInfo.GetCustomAttribute <ConfigFileGroup>(); if (groupAttribute != null) { _configGroups.Add(groupAttribute.Name, (IEnumerable <string>)propertyInfo.GetValue(this)); } } } } } return(_configGroups); }