Я создал собственный класс, который наследуется от System.Configuration.ConfigurationSection
, реализованный так (это очевидно, просто для запуска реальной конфигурации):
public class Config : ConfigurationSection
{
[ConfigurationProperty("quoteOfTheDay", DefaultValue = "It is what it is.", IsRequired = false)]
public string QuoteOfTheDay
{
get
{
return this["quoteOfTheDay"] as string;
}
}
[ConfigurationProperty("yourAge", IsRequired = true)]
public int YourAge
{
get
{
return (int)this["yourAge"];
}
}
}
Полное пространство имен + имя классаэто MyApp.Core.Config, он находится в проекте MyApp.Core, который компилируется в сборку MyApp.Core.dll.Затем я ссылался на этот проект из своего проекта ASP.NET/MVC3, который называется MyApp.UI.Я отредактировал файл Web.config
, добавив элементы sectionGroup
и section
, например:
<configSections>
<sectionGroup name="myAppConfigGroup">
<section name="myAppSection"
type="MyApp.Core.Config, MyApp.Core, Version=1.0.0.0, Culture=neutral, PublicKey=null"
allowLocation="true"
allowDefinition="Everywhere" />
</sectionGroup>
</configSections>
<myAppConfigGroup>
<myAppSection>
</myAppSection>
</myAppConfigGroup>
Однако, похоже, что тип MyApp.Core.Config
не используется для проверки правильностиКонфигурация или предоставить Intelli-смысл, как я редактирую конфигурацию.Вот некоторые наблюдения, которые я сделал:
- Я определил свойство
yourAge
как IsRequired = true
, и приложение работает без него. - Я даже могу изменить тип (нанекоторый тип, который даже не существует, например, Foo.Bar) в элементе
<section>
, и все по-прежнему работает нормально - Но если я удалю элемент
<section>
, приложение не запустится.
Я сбит с толку, любая помощь?