IntelliSense для Enum в разделе настраиваемой конфигурации

Я хочу использовать перечисление в разделе настраиваемой конфигурации. Итак, я реализовал перечисление DatabaseMode и соответствующее свойство.

Я также реализовал соответствующее свойство в моем System.Configuration.ConfigurationElement. Но для того, чтобы IntelliSense работал в web.config, мне нужно предоставить определение схемы (xsd), отражающее ту же структуру в формате xsd.

У меня вопрос: как должна выглядеть схема для поддержки перечисления?

Перечисление с различными параметрами:

public enum DatabaseMode
{
   Development,
   Deployment,
   Production
}

Свойство, хранящее информацию о Режиме:

[ConfigurationProperty(databaseAlias)]
public DatabaseElement Database
{
   get { return (DatabaseElement)this[databaseAlias]; }
   set { this[databaseAlias] = value; }
}

Ниже важная часть моего файла схемы:

<xs:element name="database">
  <xs:complexType>
    <xs:attribute name="server" type="xs:anyURI" use="required" />
    <xs:attribute name="name" type="xs:string" use="required" />
    <xs:attribute name="user" type="xs:string" use="required" />
    <xs:attribute name="password" type="xs:string" use="required" />
  </xs:complexType>
</xs:element>

person Kuepper    schedule 12.04.2011    source источник


Ответы (1)


Фактически вы можете определить перечисление в XSD. Для вашего примера свойства DatabaseMode фрагмент XSD будет выглядеть следующим образом:

<xs:attribute name="databaseMode"> <!-- I'm assuming you're using camelCasing -->
    <xs:simpleType>
        <xs:restriction base="xs:string">
            <xs:enumeration value="development" />
            <xs:enumeration value="deployment" />
            <xs:enumeration value="production" />
        </xs:restriction>
    </xs:simpleType>
</xs:attribute>

Надеюсь, это поможет.

Сопутствующий вопрос, если кто-то еще захочет ответить, заключается в следующем: после создания XSD его следует разместить, чтобы Visual Studio распознала его в файле web.config?

ОБНОВЛЕНИЕ: я нашел ответ на свой вопрос здесь на SO.

person fourpastmidnight    schedule 21.09.2012