Пример #1
0
        public SettingsCollectionDTO GenerateDTO(SettingsCollectionBase settingsCollection)
        {
            var dto = new SettingsCollectionDTO();

            var settingCollectionType = settingsCollection.GetType();

            dto.TypeFullName              = settingCollectionType.FullName;
            dto.AssemblyFullName          = settingCollectionType.Assembly.FullName;
            dto.TypeAssemblyQualifiedName = settingCollectionType.AssemblyQualifiedName;

            // Translate properties
            var properties = GetType().GetProperties()
                             .Where(p => typeof(SettingBase).IsAssignableFrom(p.PropertyType));

            foreach (var prop in properties)
            {
                var set        = (SettingBase)prop.GetValue(settingsCollection);
                var settingDto = new SettingDTO();
                settingDto.Name = prop.Name;
                settingDto.ValueTypeFullName = set.ValueType.FullName;
                settingDto.ValueTypeAssemblyQualifiedName = set.ValueType.AssemblyQualifiedName;
                settingDto.ValueAssemblyFullName          = set.ValueType.Assembly.FullName;
                settingDto.ValueTypeAssemblyQualifiedName = set.ValueType.AssemblyQualifiedName;
                settingDto.Value = set.Value;
            }

            return(dto);
        }
Пример #2
0
        /// <summary>
        /// Add a new settings collection
        /// </summary>
        /// <param name="settingsCollection"></param>
        /// <remarks>Raises an invalid argument exception if the Collection is not direct sub class of SettingsCollectionBase</remarks>
        public void AddSettingsCollection(SettingsCollectionBase settingsCollection)
        {
            if (settingsCollection.GetType().BaseType != typeof(SettingsCollectionBase))
            {
                throw new ArgumentException("The collection type must be directly derived from SettingsCollectionBase. Multi-level inheritance is not supported");
            }

            lock (_settingsCollections)
            {
                _settingsCollections.Add(settingsCollection);
            }
        }