我想在自定义配置部分中使用枚举。所以我实现了一个枚举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>
答案 0 :(得分: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上找到了上述问题here的答案。