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

Искам да използвам enum в моя раздел за персонализирана конфигурация. Така че внедрих enum DatabaseMode и съответното свойство.

Също така внедрих съответното свойство в моя System.Configuration.ConfigurationElement. Но за да работи IntelliSense в web.config, трябва да осигуря дефиницията на схемата (xsd), отразяваща същата структура в xsd формат.

Въпросът ми е как трябва да изглежда схемата, за да поддържа enum?

Преброяването с различните опции:

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