IntelliSense для Enum в разделе пользовательских настроек - PullRequest
2 голосов
/ 12 апреля 2011

Я хочу использовать 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>

1 Ответ

1 голос
/ 21 сентября 2012

Вы действительно можете определить перечисление в 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.

...