internal Setting( TTier currentTier, TDataCenter currentDataCenter, SettingInfo <TTier, TDataCenter> info, IList <TDataCenter> availableDataCenters) { Name = info.Name; Description = info.Description; TypeName = info.PropertyInfo.PropertyType.FullName; IsEnum = info.PropertyInfo.PropertyType.IsEnum; var activeValue = info.GetActiveValueFor(currentTier, currentDataCenter); if (activeValue.IsOverride) { ActiveOverride = activeValue; } DefaultValue = info.GetDefaultFor(currentTier, currentDataCenter); var sorter = GetComparerFor(currentTier, currentDataCenter); AllDefaults = info.Defaults.OrderBy(v => v, sorter).ToList(); AllOverrides = info.Overrides.OrderBy(v => v, sorter).ToList(); if (IsEnum) { EnumNames = EnumToDictionary(info.PropertyInfo.PropertyType); } AllowsOverrides = availableDataCenters.ToDictionary( dc => dc.ToString(), dc => info.CanSetOverrideFor(currentTier, dc)); RequiresRestart = Attribute.IsDefined(info.PropertyInfo, typeof(ChangeRequiresRestartAttribute)); }