我有一个代表配置元素的类:
public class ProductLevelConfigurationElement
: ConfigurationElement, IProductLevelConfiguration
{
[ConfigurationProperty("level",IsKey = true, IsRequired = true)]
public ProductLevel Level
{
get { return (ProductLevel)this["level"]; }
set { this["level"] = value; }
}
[ConfigurationProperty("include")]
public bool Include
{
get { return (bool)this["include"]; }
set { this["include"] = value; }
}
}
在web.config中我想配置它:
<item level="1" include="true" />
但它不起作用。如果我将MainProduct
放在level属性(此枚举的值之一)中,那么它将完美无缺。
关于如何解决这个问题的任何想法?
答案 0 :(得分:2)
您可以通过将配置属性更改为int
类型来隐藏 hack ,将其设为私有并在您的类上创建新属性。
[ConfigurationProperty("level", IsKey = true, IsRequired = true)]
private int LevelFromConfig
{
get { return (int)this["level"]; }
set { this["level"] = value; }
}
public ProductLevel Level
{
get { return (ProductLevel)this.LevelFromConfig; }
}
上面的代码是一个简单的例子,没有任何错误检查。
答案 1 :(得分:0)
我找到了解决方案。
您可以覆盖DeserializeElement方法
protected override void DeserializeElement(System.Xml.XmlReader reader, bool serializeCollectionKey)
{
Level = (ProductLevel) int.Parse(reader.GetAttribute("level"));
}