![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Создание своих типов ConfigSection
В этой части мы рассмотрим создание своих собственных ConfigSection. В этой главе мы реализуем загрузку файлов и создание превью. Нам понадобятся следующие данные: во-первых, зависимость mime-type от расширения, и иконка файлов (для скачивания, например): · расширение · mime-type · большая иконка · маленькая иконка и во-вторых, данные для создания превью: · наименование превью (например, UserAvatarSize) · ширина · высота Оба типа делаются одинаково, так что я распишу только создание одного из них. Пусть это будет IconSize, для создания превью. Первое, что надо сделать - это создать класс, наследуемый ConfigurationElement (/Global/Config/IconSize.cs): public class IconSize: ConfigurationElement { [ConfigurationProperty(" name", IsRequired = true, IsKey = true)] public string Name { get { return this[" name" ] as string; } }
[ConfigurationProperty(" width", IsRequired = false, DefaultValue = " 48")] public int Width { get { return (int)this[" width" ]; } }
[ConfigurationProperty(" height", IsRequired = false, DefaultValue = " 48")] public int Height { get { return (int)this[" height" ]; } } } Рассмотрим подробнее: · ConfigurationProperty состоит из имени, это имя атрибута в строке · IsRequired – обязательный этот параметр или нет · IsKey – является ли ключом (как первичный ключ в БД) · DefaultValue – значение по умолчанию Следующий шаг – это создание класса коллекции (так как у нас будет множество элементов) и секции (/Global/Config/IconSize.cs): public class IconSizesConfigSection: ConfigurationSection { [ConfigurationProperty(" iconSizes")] public IconSizesCollection IconSizes { get { return this[" iconSizes" ] as IconSizesCollection; } } }
public class IconSizesCollection: ConfigurationElementCollection { protected override ConfigurationElement CreateNewElement() { return new IconSize(); }
protected override object GetElementKey(ConfigurationElement element) { return ((IconSize)element).Name; } } В Web.config добавляем: < iconConfig> < iconSizes > < add name =" Avatar173Size" width =" 173" height =" 176" /> … < /iconSizes> < /iconConfig> Теперь необходимо объявить класс разбора этой секции в configSection: < section name=" iconConfig" type=" LessonProject.Global.Config.IconSizesConfigSection, LessonProject " />
Обратите внимание, что в описание type необходимо указать имя dll, в которой он содержится. Это важно, но будет рассмотрено в unit-тестах.
|