Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Создание своих типов 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-тестах.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.